XML DOM insertBefore() 메서드
정의와 사용법
insertBefore() 메서드는 기존 자식 노드 앞에 새로운 자식 노드를 삽입합니다.
이 메서드는 이 새로운 자식 노드를 반환합니다.
문법:
elementNode.insertBefore(new_node, existing_node)
매개변수 | 설명 |
---|---|
new_node | 필수. 삽입할 노드. |
existing_node | 필수. 존재하는 노드. 새로운 노드를 이 노드 앞에 삽입합니다. |
가이드와 비고:
비고:Internet Explorer는 노드 간에 생성된 공백 텍스트 노드(예: 개행 문자)를 무시합니다. 그러나 Mozilla는 이렇게 하지 않습니다. 따라서 아래의 예제에서는 마지막 자식 노드의 노드 타입을 확인하는 함수를 사용합니다.
요소 노드의 노드 타입은 1입니다. 따라서 마지막 자식 노드가 요소 노드가 아니면, 이전 노드로 이동하고 해당 노드가 요소 노드인지 확인합니다. 이 과정은 마지막으로 요소 노드가 되는 자식 노드를 찾을 때까지 지속됩니다. 이 방법을 통해 Internet Explorer와 Mozilla에서 모두 올바른 결과를 얻을 수 있습니다.
IE와 Mozilla 브라우저의 차이에 대한 더 많은 내용을 원하시면 CodeW3C.com의 XML DOM 교육에서 확인하십시오 DOM 브라우저 이 장
실례
모든 예제에서 우리는 XML 파일을 사용할 것입니다 books.xml또한 JavaScript 함수 loadXMLDoc()。
아래의 코드 스니펫은 새로운 <book> 노드를 생성하고, 그것을 문서의 마지막 <book> 요소 앞에 삽입합니다:
// 마지막 자식 노드가 요소 노드인지 확인
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));