HTML을 다룰 때 마주치는 일반적인 노드 유형 (nodeType). 매핑되는 숫자코드가 존재한다.
1: ELEMENT_NODE - 태그들. <body>, <a>, <p>...
2: ATTRIBUTE_NODE - class 지정 태그 class = "funEdges"...
3: TEXT_NODE - 텍스트 문자
9: DOCUMENT_TYPE
10: DOCUMENT_TYPE_NODE
11: DOCUMENT_FRAGMENT_NODE
노드 유형들의 인스턴스를 생성하는 인터페이스/생성자의 이름, 노드 예시
HTMLBodyElement: ELEMENT_NODE;
TEXT: TEXT_NODE;
HTMLDocument: DOCUMENT_NODE;
Object < Node < Document < HTMLDocument
모든 노드 개체는 속성과 메서드를 Node 개체로부터 상속받는다.
이 속성 및 메소드는 DOM을 조작, 조사, 탐색하는 기준이 되는 값과 함수다. 또, document, HTMLElement 인터페이스와 같은 하위 노드 인터페이스에서도 속성 및 메소드를 제공한다.
Node 속성
Node 메소드
Document 메서드
HTML *ELEMENT 속성
HTML element 메서드
noveValue 속성은 Text와 Comment 노드에서 실제 텍스트 문자열을 추출하는데 초점을 가지고 있다.
<a href="#">Hi</a>;
// sciprt
console.log(document.querySelector("a".firstChild.nodeValue)); // Hi
브라우저는 HTML 문서를 해석할 때 초기 로딩을 HTML 파일 내용을 기반으로 노드와 트리를 구성한다. 이때 JS를 이용하여 직접 노드를 생성하는 것도 가능하다.
createElement() : Element 노드 생성
createTextNode() : Text 노드 생성
// div Element 생성
var elementNode = document.createElement("div");
// Hi text 생성
var textNode = document.createTextNode("Hi");
JS 문자열을 사용하여 DOM에 노드를 생성하고 추가하는 기능
<div id="A"></div>
// DOM에 <strong> Element와 Hi text node 추가
document.getElementById('A').innerHTML = `<strong>Hi</strong>`
<div id="A"><i>Hi</i></div>
console.log(document.getElementById('A').innerHTML) // <i>Hi<i>
console.log(document.getElementById('A').outerHTML) // <div id="A"><i>Hi</i></div>
JS 노드 개체를 DOM 트리에 삽입할 수 있게 해준다.
<p>Hi</p>;
// strong Element 생성
var elementNode = document.createElement("strong");
// p 태그를 찾은 후 뒤에 삽입
// 결과적으로 <p><strong>Hi</strong></p>
document.querySelector("p").appendChild(elementNode);
<ul>
<li>2</li>
<li>3</li>
</ul>;
var firstLi = document.createElment("li");
var ul = document.querySelector("ul");
// <li>2</li> 앞에 firstLi 생성
ul.insertBefore(firstLi, ul);