본문 바로가기
Study/JavaScript

[JavsScript] DOM 구조

by YoungD 2024. 2. 8.

 

 

DOM(Document Object Model) 구조란?

문서 객체 모델로, 웹브라우저가 HTML페이지를 인식하는 방식이다.

DOM은 웹 페이지(HTML이나 XML)의 콘텐츠 및  구조, 스타일 요소를 구조화 시켜 표현해 JavaScript 언어가 쉽게 웹페이지에 접근해 읽고 조작할 수 있도록 연결시켜주는 역할을 한다.

 

document -> 문서

. -> 접근

get -> 가지고오다

Element ->요소

ByID -> 아이디로

 

 

 

<DOM의 tree 형식의 자료구조>

 

 

 

 
    <script>

        let h1Element = document.getElementById('h1Tag');
        console.log(h1Element);

    </script>
 

 

 

 
<body>
    <ul>
        <li>김밥</li>
        <li>라면</li>
        <li>떡볶이</li>
    </ul>

    <script>
        NodeList는 웹 페이지의 HTML 문서 내에서 선택한 요소 뿐만 아니라, 텍스트, 주석, 속성 등의
        모든 노드를 문서 내 정렬된 순서대로 모아둔 집합

        document.queryselectorAll() -> NodeList 객체를 반환
 
        const liElements = document.queryselectorAll('li');
        console.log(liElements);

       
        for문 적용

        for(let i=0; i<liElements.length; i++){
            console.log(liElements[i].textContent);
        }
       
    </script>
 

 

 

 

BOM(Browser Object Model)

웹브라우저의 창이나 프래임을 추상화해서 프로그래밍적으로 제어할 수 있도록 제공하는 수단

 

BOM을 사용하는 이유

1. alert

2. confirm

3. beforeunload

4. location

5. history

6. prompt

 

 
    <script>

        window: 브라우저 객체 최상위
       
        window.open("https://www.naver.com", "네이버", "width=500; height=500")

        console.log(screen);

        console.log(navigator);
       
    </script>
 

 

 

 

 

 
<body>
    <input type="text" id="inputTag">
    <button onclick="getInput()">클릭</button>

    <script>
 
        이벤트핸들러 (함수) !! .value
        const getInput = () =>{
            let inputVal = document.getElementById('inputTag').value;
            alert(inputVal);
        }


    </script>
 

 

<body>
    <h1>클릭 한번 해볼까요?</h1>
    <button onclick="mkH1()">h1태그 생성</button>
    <button onclick="mkA()">a태그 생성</button>
    <button onclick="mkUl()">ul태그 생성</button>
   
    div는 생성한 태그를 누적할 공간
    <div id="divTag"></div>
   
    <script>
       글자를 누적해줄 공간인 div 가져오기
        let divVal = document.getElementById('divTag');

        함수 별로 가지고 온 div태그 안에 태그 생성하기!
        function mkH1(){
            divVal.innerHTML += '<h1>DOM 활용하기</h1>'
        }

        function mkA(){
            divVal.innerHTML += '구글로 이동'
        }

        function mkUl(){
            divVal.innerHTML += '<ul><li>HTML</li><li>CSS</li><li>JAVASCRIPT</li></ul>'
        }


    </script>

 

 

 

 

 
    <h1 id="tit">오늘<span><strong>날씨</strong></span>가 춥습니다.</h1>
 
    <script>
        HTML요소객체 접근
        const tit = document.getElementById('tit')
        console.log('h1요소객체 접근: '+tit);

        console.log(tit.innerText);
        console.log(tit.innerHTML);

        innerText속성 - 요소의 컨텐츠를 접근/변경 변경할 때 태그와 문자열 -> 문자열로 반영
 
        tit.innerHTML = '<a href="#">DOM 공부하는 중</a>';

    </script>
 

 

 

 
    <span id="spanTag">아래 버튼을 클릭하면 이 텍스트의 색깔과 크기가 변해요</span>
    <br>
    <button onclick="clickFunc()">이 버튼 클릭!</button>

    <script>
        let spanTag = document.getElementById('spanTag');
        console.log('get', spanTag);

        DOM 스타일 제어
        요소.style.속성 = 값

        queryselector : CSS 선택자로 요소 검색
        queryselectorAll : CSS 선택자로 모든 요소 검색
        spanTag = document.querySelector('span');
        console.log('query', spanTag);

        const clickFunc = () =>{
            spanTag.style.color = 'tomato';
            spanTag.style.fontSize = '25px';
            spanTag.style.fontWeight = '900';
        }
       
    </script>
 

 

'Study > JavaScript' 카테고리의 다른 글

[JavaScript] 객체  (1) 2024.01.26
[JavaScript] 함수, 계산기 만들기  (0) 2024.01.25
[JavaScript] 배열  (0) 2024.01.23
[JavaScript] 반복문 (for문)  (1) 2024.01.22
[JavaScript] 반복문 (While문)  (0) 2024.01.19