본문 바로가기

JavaScript/Interactive JavaScript

[JavaScript] DOM 트리

DOM트리

HTML의 계층 구조는 DOM에서도 반영되는데 이러한 계층구조를 나무에 비유해서 DOM 트리라고 한다. 각 노드 간의 관계는 부모, 자식, 형제라는 용어로 표현함.

 

 

요소노드(Element Node) : 태그를 표현하는 노드

텍스트노드(TextNode) : 문자를 표현하는 노드로 일반적으로 요소노드의 자식요소가 되며 자식요소를 가질 수 없음.

 

 

요소노드에 대한 이동 프로퍼티

 

프로퍼티 유형 결과
element.children 자식 요소 노드 element의 자식 요소 모음(HTMLCollection)
element.firstElementChild 자식 요소 노드 element의 첫 번째 자식 요소 하나
element.lastElementChild 자식 요소 노드 element의 마지막 자식 요소 하나
element.parentElement 부모 요소 노드 element의 부모 요소 하나
element.previousElementSibling 형제 요소 노드 element의 이전(previous) 혹은 좌측(left)에 있는 요소 하나
element.nextElementSibling 형제 요소 노드 element의 다음(next) 혹은 우측(right)에 있는 요소 하나

모든노드에 대한 이동 프로퍼티

요소노드가 아닌 다른 노드를 이동하고 싶을 때 사용

 

프로퍼티 유형 결과
node.childNodes 자식 노드 node의 자식 노드 모음(NodeList)
node.firstChild 자식 노드 node의 첫 번째 자식 노드 하나
node.lastChild 자식 노드 node의 마지막 자식 노드 하나
node.parentNode 부모 노드 node의 부모 요소 하나
node.previousSibling 형제 노드 node의 이전(previous) 혹은 좌측(left)에 있는 노드 하나
node.nextSibling 형제 노드 node의 다음(next) 혹은 우측(right)에 있는 노드 하나

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>JS with Codeit</title>
</head>
<body>
  <div id="content">
    <h2 id="title-1">Cat-1</h1>
    <ul id="list-1">
      <li>Ragdoll</li>
      <li>British Shorthair</li>
      <li>Scottish Fold</li>
      <li>Bengal</li>
      <li>Siamese</li>
      <li>Maine Coon</li>
      <li>American Shorthair</li>
      <li>Russian Blue</li>
    </ul>
    <h2 id="title-2">Cat-2</h1>
    <ul id="list-2">
      <li>Sphynx</li>
      <li>Munchkin</li>
      <li>Persian</li>
      <li>Norwegian Forset</li>
      <li>Turkish Angora</li>
      <li>Bombay</li>
      <li>Selkirk Rex</li>
      <li>Munchkin</li>
    </ul>
  </div>
  <script src="index.js"></script>
</body>
</html>
const myTag = document.querySelector('#content');

console.log(myTag);

// 형제 요소 노드
console.log(myTag.previousElementSibling); // 이전 형제는 없으므로 null
console.log(myTag.nextElementSibling); // script 태그 출력

// 부모 요소 노드
console.log(myTag.parentElement); // #content의 부모태그인 body 태그

// 자식 요소 노드
console.log(myTag.children[1]);
console.log(myTag.firstElementChild); // 자식의 첫번째 요소 
console.log(myTag.lastElementChild); // 자식의 마지막 요소