ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DOM
    JavaScript/자바스크립트 기본 2023. 3. 5. 22:08

     

    DOM이란?

    문서를 객체화 하여 트리로 만들어 놓은 상태. 자바스크립트를 통해 접근하고 제어한다.

    <!DOCTYPE html>
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>DOM</title>
    </head>
    <body>
      <h1>DOM</h1>
      <p>안녕하세요 DOM입니다</p>
      <div>Document Object Model</div>
    </body>
    </html>

    자바스크립튼 동적인 요소를 제어하기위해 등장했다. 이 DOM트리를 이용해서 웹페이지의 요소에 접근하고 제어 할 수 있다.

    브라우저에는 웹 문서를 해석하는 엔진이 내장되어 있다. (대표적으로 구글의 V8엔진)

    엔진은 코드를 위에서 한줄씩 읽어가며 해석한다. 해석이 끝나면 전체 문서를 객체화 하여, 자바스크립트로 접근 할 수 있게 해준다.

     

    문서를 객체화 한 DOM은 트리구조를 가지고 있고, 각각의 객체를 노드 라고 한다.상위에 있는 노드를 '부모노드'라고 하고,

    부모요소 하위에 있는 노드들은 '자식노드'라고 한다.이 DOM 트리 최상위 루트인 document로 html요소에 접근 할 수 있는 것이다. 

    태그 내의 문자와 속성역시 객체다. 이런 모든 객체는 자바스크립트를 통해 접근 할 수 있고, 페이지를 조작 할 때 이 객체를 사용한다.

    document.body.style.background = 'blue'

    이런식으로 배경 색상을 변경하기위해 style.background를 사용 했지만, 다양한 프로퍼티를 사용해서 여러가지 접근이 가능하다.

     

    노드의 경우 총 열두 가지 있지만, 주로  다섯 가지 노드를 다룬다.

    종류 설명
    문서 노드

    (document node)
    DOM의 진입점이 되는 문서 노드
    HTML 문서 전체를 나타낸다.
    요소 노드

    (element node)
    태그를 통해 생성된 요소 노드
    속성 노드를 가질 수 있는 유일한 노드이다.
    속성 노드

    (attribute node)
    요소 노드에 관한 정보를 가진다.
    해당 요소의 자식 노드에는 포함되지 않는다.
    텍스트 노드

    (text node)
    텍스트를 포함하는 노드
    주석 노드

    (comment node)
    모든 주석은 주석 노드로 존재

     

     

     

    DOM과 BOM 

    DOM은 문서(Document)의 객체화 라면, BOM은 Browser Object Model로 자바스크립트가 브라우저에 접근하기 위해 만들어진

    모델이라고 할 수 있다.window객체를 통해서 BOM에 접근이 가능하다. 

    브라우저라는 것은 결국 window 안에서 수행되는 프로그램이다. 모든 객체들은 최상위 객체인 window아래 존재한다.

     

     


    이미지 출처

    <a href="https://www.flaticon.com/free-icons/christmas" title="christmas icons">Christmas icons created by Smashicons - Flaticon</a>

    <a href="https://www.flaticon.com/free-icons/web-page" title="web-page icons">Web-page icons created by Talha Dogar - Flaticon</a>

    참고자료

    https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Introduction

     

     
     

     

Designed by Tistory.