DOM 이해

업데이트:

1. DOM(Document Object Model)

1.1 DOM이란?

DOM은 Document Obejct Model로 문서에 대한 인터페이스입니다. 페이지의 콘텐츠, 구조, 스타일들을 읽고 조작할 수 있도록 다양한 API를 제공합니다.

1.2 DOM의 구조

DOM은 문서를 노드 트리로 표현합니다.
브라우저가 HTML 문서를 읽고 자바스크립트에서 이해할 수 있는 Node로 변환하게 되는데 이때 생성되는 모델이 DOM Tree 입니다. 자료구조의 Tree와 같은 구조입니다.

  • 1.2.1 DOM 트리 예시

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>DOM Tree</title>
      </head>
      <body>
        <h1 class="hello">hello</h1>
        <p class="tree">dom tree</p>
      </body>
    </html>
    

    profile

    HTML 문서를 이와 같이 Tree로 표현하게 됩니다.

1.3 DOM을 사용하는 이유?

DOM에 따르면 모든 HTML태그들은 객체입니다. 이런 모든 객체는 자바스크립트를 통해 접근할 수 있고, 웹 페이지안에 많은 객체(요소)들을 동적으로 조작할 때 사용합니다.
예를 들어 우리가 웹 서비스를 만들고 구성하는데 배경색을 바꿀 수 있어야 한다고 했을때 원본 HTML 문서의 style을 직접 변경해서 변경할 수도 있지만 만약 수시로 색상이 변경되는 경우라면??
이러한 문제를 DOM을 이용해 해결할 수 있습니다.
하지만 DOM을 이용해 객체(요소)에 접근하여 동적으로 변경하더라도 실제 원본 HTML은 변경되지 않는다는 점입니다.

1.4 DOM과 HTML이 다른 경우

HTML 문서를 이용해 DOM이 생성되지만 항상 둘다 같지는 않습니다.

  • 브라우저가 수정한 경우
    HTML 문서 기본 구조에 맞지 않는 경우 브라우저에 의해 생성된 DOM트리에는 올바르게 수정되어 나타납니다.
    예를 들어 <head> 태그가 빠졌다던지 할때 자동으로 DOM 트리에는 삽입되어집니다.

  • 자바스크립트로 DOM을 수정한 경우
    자바스크립트로 새로운 요소를 추가하거나 삭제 수정하게 되면 원본 HTML 문서의 내용과 달라지게 됩니다. 이것은 결국 원본과 다르다는 것을 의미합니다.

MDN DOM
MDN HTML DOM

댓글남기기