TIL 11 | JavaScript DOM Tree


<!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>
DOM 트리 여행하기
const myTag = document.querySelector('#list-1'); 
console.log(myTag); // <ul id="list-1">...</ul>

1.兄弟要素ノードに移動


.previousElementSibling
.nextElementSibling
console.log(myTag.previousElementSibling);
// <h2 id="title-1">Cat-1</h1>, 이전 형제 요소, 요소가 없으면 null 출력
console.log(myTag.nextElementSibling); 
// <h2 id="title-2">Cat-2</h1>, 다음 형제 요소, 요소가 없으면 null

2.親要素ノードに移動


.parentElement
console.log(myTag.parentElement); 
// <div id="content">... </div> 해당 태그의 부모요소

3.サブエレメントノードに移動


.children[index]
.firstElementChild
.lastElementChild
console.log(myTag.children[1]); 
// <li>British Shorthair</li> 해당 요소의 두번째 자식요소
console.log(myTag.firstElementChild); 
// <li>Ragdoll</li> 해당 요소의 첫번째 자식 요소
console.log(myTag.lastElementChild); 
//  <li>Russian Blue</li> 해당 요소의 두번째 자식 요소

4.複合

console.log(myTag.parentElement.nextElementSibling); 
// <script src="index.js"></script>

5.innerHTML


innerHTMLは、要素の値をチェックするのではなく、変更に使用されます.
// innerHTML
console.log(myTag.innerHTML); 
/*    <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> */
      // 들여쓰기와 줄바꿈 모두 반영되어 출력
myTag.innerHTML = '<li>Exotic</li>' 
// 선택된 요소의 자식 요소가 요소가 이값으로 교체된다. 
myTag.innerHTML += '<li>Exotic</li>' 
// 기존 HTML 마지막 부분에 요소를 추가하는 식

6.outerHTML


innerHTMLなど、改行やインデントは出力に含まれます.
console.log(myTag.outerHTML);
/*<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>*/
myTag.outerHTML = '<ul id ="new-liest"><li>Exotic </li></ul>' 
// 선택된 요소가 완전히 사라지고 새 값으로 교체된다.

7. textContent


要素内の内容はhtml以外のテキストのみ出力されます.
/*
      Ragdoll
      British Shorthair
      Scottish Fold
      Bengal
      Siamese
      Maine Coon
      American Shorthair
      Russian Blue
*/
myTag.textContent = 'new text!'  
// innerHTML과 같에 요소 안 자식 요소의 내용이 완전히 교체된다. textContent는 모든 값을 문자열로 반환하기 때문에 html 특수문자도 코드 그 자체로 문자열로 수정된다.