[JavaScript] Node 객체

JAVASCRIPT / NODE

 

Node


DOM객체의 모든 것은 Node에 속한다.

요소를 더욱 세분화 하면 element node와 text node로 나눌 수 있다.
(주석은 comment node)

각각의 노드에 접근하고 변경할 수 있다.

 

 

 


element node, text node

 

element node


HTML의 태그들이라고 생각하면 된다. (<p>, <div> 등 )
ex > <p> 이거는 text node 입니다. </p>

 

text node


각각의 태그 사이에 들어가는 정보 
ex > <p> 이게 text node 입니다. </p> 

 

문법

 

// element node에 text node를 삽입한다.
element_node.appendChild(text_node)  

// text node가 삽입된 (안돼도 됨)  element node를 html 요소의 맨 뒤에 추가한다
element.appendChild(element_node)

 

element node ,text node생성

 

// 1. p 태그를 생성하는 변수 생성 (new_para)
const new_para = document.createElement("p");

// 2. 텍스트를 담고 있는 textNode 생성
const text_node = document.createTextNode("This is new paragraph");

// 3. element node(new_para)에 text node 추가
 new_para.appendChild(text_node);

element node와 text node 를 생성하고 두개를 연결하면

<p>This is new paragraph</p> 이런 형태를 담고 있는 노드가 된다.

 

예제


버튼 클릭시 특정 id를 가진 <div>태그에 node 삽입

<!DOCTYPE html>
<head>
    <meta charset="euc-kr">
</head>
<body>
    <button onclick="doPush();">Push</button>
    <div id="content">
        <p>This is paragrape 1.</p> 
        <p>This is paragrape 2.</p>
    </div>
    
    <script>
        const content = document.getElementById("content");
        
        function doPush() {
            const new_para = document.createElement("p");
            const text_node = document.createTextNode("This is new paragraph");

            new_para.appendChild(text_node); // new_para에 text_node를 뒤에 추가
            content.appendChild(new_para);   // content(<div>)맨뒤에 new_para를 추가 
        }
    </script>
</body>
</html>

버튼을 누를 때 마다 영역의 맨 뒤에 node가 추가 된다. 

특정 요소 앞에 node 추가


기본적인 appendChild(node)는 맨 뒤에 추가를 하지만 

insertBefore(node, element)를 사용하면 특정 요소 앞에 추가할 수 있다. 

// content.appendChild(new_para);   : 맨 뒤에 추가 

var first_para = document.querySelector("#content > p:first-child"); // 특정 요소 선택
content.insertBefore(new_para, first_para); // first_para 앞에 new_para 추가

id가 content인 요소 안에 p태그중 첫번째 요소 앞에 노드가 추가 된다.


요소 제거


element.remove() 를 사용하면 해당 요소를 제거할 수 있다.

element_to_delete = document.querySelector("#content > :last-child");
element_to_delete.remove();

id가 content인 요소 안에 마지막 요소를 제거한다.

 

댓글

Designed by JB FACTORY