: 모든 HTML 요소와 요소의 어트리뷰트, 텍스트를 JavaScript Object처럼 각각의 객체로 만들고, 이 객체들을 트리 구조로 구성한 것
JavaScript를 통해 이 DOM을 동적으로 변경할 수 있으며, 변경된 DOM은 렌더링에 반영된다.
: <script>
태그를 이용한다.
<script src="script.js"></script>
웹 브라우저는 코드를 해석하는 과정에서 <script>
요소를 만나면, HTML 해석을 중지하고, <script>
요소를 먼저 실행한다.
➡️ 그렇기 때문에 <script>
요소가 어디에 위치해있는지는 매우 중요하다.
<head>
요소에 추가하기<!--HTML-->
<head>
<meta charset="UTF-8" />
<title>Document</title>
<script src="script.js"></script> <!--head 안에-->
</head>
<body>
<div id="msg">Hello world!</div>
</body>
// JavaScript
let msgDiv = document.querySelector('#msg');
console.log(msgDiv); // null
콘솔에 null을 출력된 이유?
웹 브라우저는
<script>
요소를 만나면, HTML 해석을 중지하고,<script>
요소를 먼저 실행하는데,
위의 경우 웹 브라우저가 HTML을 다 해석하지 못한 상태에서<script>
요소를 만나 script 파일을 실행했다.
따라서 DOM tree가 생성되기 전에 존재하지 않은 DOM 요소(<div>
)에 접근하려 했기 때문에,null
을 반환한 것이다.
<body>
가 끝나기 전에 추가하기<!--HTML-->
<body>
<div id="msg">Hello world!</div>
<script src="script.js"></script><!--body 끝나기 전에-->
</body>
// JavaScript
let msgDiv = document.querySelector('#msg');
console.log(msgDiv); // <div id="msg">Hello world!</div>
따라서 <script>
요소는 <body>
요소 최하단에 추가하는 게 좋다.
console.dir()
console.dir(object)
: 지정된 JavaScript 객체의 속성을 목록을 표시한다.
console.dir(document.body);
예시) document.body 객체의 속성 목록을 확인할 수 있다.
❔ 학습 후 궁금한 점
- HTMLElement 객체란 무엇인지?
console.dir()
과console.log()
의 차이점
이 글은 아래 링크를 참고하여 작성한 글입니다.
https://poiemaweb.com/js-dom