..

Search

6) DOM API

DOM API


DOM API

Ajax를 이용하여 웹 페이지의 일부분만을 갱신하려면 더욱 다양한 DOM 속성을 활용해야 합니다.

따라서 DOM과 관련된 다양한 API를 이용하여 노드를 동적으로 생성하고, 조작할 수 있어야만 합니다.

 

DOM API에 대한 더 자세한 사항은 자바스크립트 노드의 조작 수업과 노드의 관리 수업에서 확인할 수 있습니다.

 

자바스크립트 노드의 관리 수업 확인 =>

자바스크립트 노드의 조작 수업 확인 =>

 


노드의 추가

다음 메소드를 사용하면 특정 위치에 새로운 노드를 추가할 수 있습니다.

 

1. appendChild() : 새로운 노드를 해당 노드의 자식 노드 리스트에 맨 마지막 노드로 추가함.

2. insertBefore() : 새로운 노드를 특정 노드 바로 앞에 추가함.

3. insertData() : 텍스트 노드의 텍스트 데이터에 새로운 텍스트를 추가함.

 

다음 예제는 appendChild() 메소드를 이용하여 노드를 추가하는 자바스크립트 예제입니다.

예제

function appendNode() {

    var parent = document.getElementById("list");  // 아이디가 "list"인 요소를 선택함.

    var newItem = document.getElementById("item"); // 아이디가 "item"인 요소를 선택함.

    parent.appendChild(newItem);                   // 해당 요소의 맨 마지막 자식 노드로 추가함.

}

코딩연습 ▶


노드의 생성

생성할 노드의 종류에 따라 다음과 같은 메소드를 사용할 수 있습니다.

 

1. createElement() : 새로운 요소 노드를 생성함.

2. createAttribute() : 새로운 속성 노드를 생성함.

3. createTextNode() : 새로운 텍스트 노드를 생성함.

 

다음 예제는 createElement() 메소드를 이용하여 노드를 생성하는 자바스크립트 예제입니다.

예제

function createNode() {

    var criteriaNode = document.getElementById("text"); // 기준이 되는 요소로 아이디가 "text"인 요소를 선택함.

    var newNode = document.createElement("p");          // 새로운 <p> 요소를 생성함.

    newNode.innerHTML = "새로운 단락입니다.";

    document.body.insertBefore(newNode, criteriaNode);  // 새로운 요소를 기준이 되는 요소 바로 앞에 추가함.

}

코딩연습 ▶


노드의 제거

다음 메소드를 사용하면 특정 노드를 제거할 수 있습니다.

 

1. removeChild() : 기존의 노드 리스트에서 특정 노드를 제거함.

2. removeAttribute() : 속성의 이름을 이용하여 특정 속성 노드를 제거함.

 

다음 예제는 removeChild() 메소드를 이용하여 노드를 제거하는 자바스크립트 예제입니다.

예제

var parent = document.getElementById("list");      // 아이디가 "list"인 요소를 선택함.

var removedItem = document.getElementById("item"); // 아이디가 "item"인 요소를 선택함.

parent.removeChild(removedItem);                   // 지정된 요소를 삭제함.

코딩연습 ▶


노드의 복제

cloneNode() 메소드를 사용하면 특정 노드를 복제할 수 있습니다.

 

다음 예제는 clondNode() 메소드를 이용하여 노드를 복제하는 자바스크립트 예제입니다.

예제

function cloneElement() {

    var parent = document.getElementById("list");     // 아이디가 "list"인 요소를 선택함.

    var originItem = document.getElementById("item"); // 아이디가 "item"인 요소를 선택함.

    parent.appendChild(originItem.cloneNode(true));   // 해당 노드를 복제하여 리스트의 맨 마지막에 추가함.

}

코딩연습 ▶


노드의 값 변경

nodeValue 프로퍼티를 사용하면 특정 노드의 값을 변경할 수 있습니다.

또한, setAttribute() 메소드는 속성 노드의 속성값을 변경할 수 있게 해줍니다.

 

다음 예제는 nodeValue 프로퍼티를 이용하여 노드를 생성하는 자바스크립트 예제입니다.

예제

var para = document.getElementById("text"); // 아이디가 "text"인 요소를 선택함.

function changeText() {

    para.firstChild.nodeValue = "텍스트 변경 완료!";

}

코딩연습 ▶


노드의 교체

replaceChild() 메소드를 사용하면 특정 노드 그 자체를 다른 노드로 바꿀 수 있습니다.

 

다음 예제는 replaceChild() 메소드를 이용하여 노드를 교체하는 자바스크립트 예제입니다.

예제

var parent = document.getElementById("parent"); // 부모 노드를 선택함.

var first = document.getElementById("first");

var third = document.getElementById("third");

function changeNode() {

    parent.replaceChild(third, first);          // first 요소를 삭제하고, 그 대신 third 요소를 삽입함.

}

코딩연습 ▶


연습문제