Zoeken…


Boom lopen

TreeWalker is een generatorachtige interface die recursief filteren van knooppunten in een DOM-structuur eenvoudig en efficiënt maakt.

De volgende code aaneengeschakeld de waarde van alle Text knooppunten in de pagina, en het resultaat drukt.

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

De .createTreeWalker functie heeft een handtekening van

createTreeWalker(root, whatToShow, filter, entityReferenceExpansion)
Parameter Details
wortel De 'root'-knoop die ondertiteld is, moet worden doorzocht
whatToShow Optionele, niet-ondertekende lange aanduiding van het type knooppunten dat moet worden weergegeven. Zie NodeFilter voor meer informatie.
filter Optioneel, een object met een acceptNode-methode om te bepalen of een knooppunt moet worden overwogen na het passeren van de whatToShow-controle
entityReferenceExpansion Verouderd en optioneel, is een Booleaanse vlag die aangeeft of bij het weggooien van een EntityReference de hele substructuur tegelijkertijd moet worden weggegooid.

Itereren over knopen

De NodeIterator- interface biedt methoden voor het itereren van knooppunten in een DOM-structuur.

Gegeven een document als dit:

<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>

Je zou je een iterator kunnen voorstellen om de <li> -elementen te krijgen:

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);
}

Voorbeeld aangepast van het voorbeeld van de Mozilla-bijdragers uit de document.createNodeIterator() van document.createNodeIterator() op het Mozilla Developer Network, gelicentieerd onder CC-by-SA 2.5 .

Dit registreert zoiets als:

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

Merk op dat dit vergelijkbaar is met het iterface van TreeWalker, maar alleen de nextNode() en previousNode() biedt.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow