2013-08-24 3 views
3

나는이 터무니없이 기술 문서 발견DOM의 순차적 탐색을 수행하는 방법은 무엇입니까?

http://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html#Traversal-Document

을하지만 실제 자바 스크립트 코드를 작성에 관한 방법을 보지 않았다.

eachChild().children과 같은 기본 DOM 메서드와 속성을 사용하여 트래버스를 수행 할 수 있다고 추측 하겠지만 최상의 전략은 무엇인지 모르겠습니다.

+0

하는 시작에 태그는 문서의 텍스트 표현에서 발생합니까? ' –

+0

무엇을 하시겠습니까? 최신 브라우저에는 특정 자질을 가진 요소를 찾기위한 많은 도우미 API가 있습니다. – Pointy

+0

@Handy,'DocumentTraversal'은 문서 순서화 된 반복자를 제공하고 브라우저가 제공하는'document' 인스턴스에 의해 구현 될 수있는 인터페이스입니다. 브라우저가 [document.createNodeIterator()] (https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator) 및 [document.createTreeWalker()] (https : // developer .mozilla.org/ko-US/docs/Web/API/document.createTreeWalker) 자바 스크립트에서 해당 인터페이스에 실제로 액세스 할 수 있습니다. –

답변

6

일단 루트 노드를 얻으면 firstChildnextSibling 만 있으면됩니다. 이 책의 더글러스 크록 포드 (Douglas Crockford)의 기능입니다. JavaScript - The Good Parts, p. 35 :

var walk_the_DOM = function walk(node, func) { 
    func(node); 
    node = node.firstChild; 
    while(node) { 
     walk(node, func); 
     node = node.nextSibling; 
    } 
} 

주어진 노드에서 DOM을 탐색하고 발견 된 각 노드에서 콜백을 실행합니다. 예를 들면 다음과 같습니다

walk_the_DOM(document.body, function(node) { 
    console.log(node); 
}); 
+0

이렇게하면 DOM을 탐색하는 좋은 예가됩니다. http://javascript.info/tutorial/traversing-dom – Trendy

+1

@Handy 브라우저 공급 업체/구현 업체에 대한 자세한 내용입니다. 어쨌든 DOM API 표준 전체를 문서화합니다. F.J의 답변은 거기에 언급 된 것들 (createNodeIterator' 함수)에 기반합니다. – bfavaretto

4

document.createNodeIterator를 사용하여이 작업을 수행하는 하나의 방법이다 : 첫번째 순서에 해당 예약 주문 탐색, 깊이 '와 무지 기술은 무엇

var nodeIterator = document.createNodeIterator(document.body); 
var currentNode; 
while (currentNode = nodeIterator.nextNode()) { 
    console.log(currentNode); 
} 
관련 문제