Post

DOM 객체에 대해 - 2

2주 간의 공백이 있었다. 건강이 최우선이다.

개요

이전에 DOM 객체에서 다룬 포스팅에서는 DOM 객체가 HTML 문서의 외부에서 HTML 을 다룰 때 사용할 수 있는 interface 라는 것과 Javascript 를 통해 DOM 에 접근해 문서의 요소에 접근할 수 있다는 것을 알았다.

추가할 내용, interface 는 쉽게 생각하면
“document.getElementById(id)”, “document.getElementsByTagName(name)”, “querySelector()” 이와 같은 것들이라고 할 수 있다.
JS 에서 이런 interface 를 통해서, Object 에 접근하는 것!

DOM의 구조

이번에는 그 구조에 대해서 조금 더 다루어 볼 것이다.

먼저, 이전 포스팅에서 언급했던 것 처럼 HTML 문서를 브라우저에서 DOM 으로 구조화해준다.

HTML 문서를 통해 만들어지는 DOM 객체의 구조

그 결과로는 위와 같은 트리 구조가 만들어지는데, document가 트리의 최상단 Node 가 된다. 이후 html tag 들이 자식 노드로서 만들어지는 구조다.

또한, 이 자식 node 들은 3가지로 나눌 수 있는데

  1. element node(HTML 요소)
  2. attribute node(id나 class 같은 것)
  3. text node(말 그대로 text)

DOM 이 만들어지는 순서

예전에 강의를 들을 때도, HTML 문서에서 <script> 태그를 작성할 때 제일 마지막에 작성해주는게 좋다는 말을 들었다.

그 이유는 바로 HTML parser 가 DOM 객체를 만드는 과정에 있는데, parser 가 HTML 문서를 읽어가며 DOM 을 생성해가다가 <script> 태그를 만나면 DOM 객체 생성을 멈추고 이 태그 내부에 정의된 코드를 먼저 실행하고 나서 다시 남은 HTML 문서를 읽어나가기 때문이다.

이 때문에, DOM 객체 생성이 아직 이루어지지 않은 요소에 접근하는 코드가 있을 경우 제대로 실행이 되지 않는 문제가 발생한다.

그래서, <script>를 HTML 문서 최하단에 작성하면 DOM 객체 생성이 지연되지 않기 때문에 모든 코드가 의도한대로 실행될 것이다.

참고

TossPayment 개발자 센터

This post is licensed under CC BY 4.0 by the author.