수색…


나무 걷기

TreeWalker 는 생성자와 유사한 인터페이스로 DOM 트리의 노드를 재귀 적으로 쉽게 필터링 할 수 있습니다.

다음 코드는 페이지의 모든 Text 노드 값을 연결하고 결과를 인쇄합니다.

let parentNode = document.body;
let treeWalker = document.createTreeWalker(parentNode, NodeFilter.SHOW_TEXT);

let text = "";
while (treeWalker.nextNode())
    text += treeWalker.currentNode.nodeValue;

console.log(text); // all text in the page, concatenated

.createTreeWalker 함수의 서명은 다음과 같습니다.

createTreeWalker(root, whatToShow, filter, entityReferenceExpansion)
매개 변수 세부
뿌리 하위 트리의 '루트'노드가 traveresed됩니다
whatToShow 선택 사항, 표시 할 노드 유형을 지정하는 부호없는 long 자세한 정보는 NodeFilter를 참조하십시오.
필터 선택 사항, 노드가 whatToShow 검사를 통과 한 후 고려해야하는지 여부를 결정하는 acceptNode 메소드가있는 객체
entityReferenceExpansion Obsolete and optional, EntityReference를 버릴 때 전체 하위 트리를 동시에 버려야하는지 여부를 나타내는 부울 플래그입니다.

노드 반복

NodeIterator 인터페이스는 DOM 트리에서 노드를 반복하는 메소드를 제공합니다.

다음과 같은 문서를 제공합니다.

<html>
<body>
  <section class="main">
    <ul>
      <li>List Item</li>
      <li>List Item</li>
      <li>List Item</li>
      <li>List Item</li>
    </ul>
  </section>
</body>
</html>

<li> 요소를 가져 오는 반복자를 상상할 수 있습니다.

let root = document.body;
let whatToShow = NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT;
let filter = (node) => node.nodeName.toLowerCase() === 'li' ? 
  NodeFilter.FILTER_ACCEPT : 
  NodeFilter.FILTER_REJECT;
let iterator = document.createNodeIterator(root, whatToShow, filter);
var node;
while (node = iterator.nextNode()) {
  console.log(node);
}

Mozilla 개발자 네트워크에서 제공하는 document.createNodeIterator() 문서에서 모질라 기고자 가 제공 한 예제에서 수정 한 예제 document.createNodeIterator() CC-by-SA 2.5에 따라 사용 허가).

이렇게하면 다음과 같은 내용이 기록됩니다.

<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>

이것은 TreeWalker iterface와 유사하지만 nextNode()previousNode() 기능 만 제공합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow