Recherche…


Marche d'arbre

TreeWalker est une interface de type générateur qui permet de filtrer de manière récursive des nœuds dans un arbre DOM facile et efficace.

Le code suivant concatène la valeur de tous les nœuds Text de la page et imprime le résultat.

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

La fonction .createTreeWalker a une signature de

createTreeWalker(root, whatToShow, filter, entityReferenceExpansion)
Paramètre Détails
racine Le noeud 'root' qui est le sous-arbre doit être traité
whatToShow Facultatif, unsigned long désignant les types de nœuds à afficher. Voir NodeFilter pour plus d'informations.
filtre Facultatif, Un objet avec une méthode acceptNode pour déterminer si un nœud, après avoir passé la vérification whatToShow, doit être considéré
entityReferenceExpansion Obsolète et facultatif, Indicateur booléen indiquant si, lors de la suppression d’une EntityReference, la totalité de son sous-arbre doit être supprimée en même temps.

Itérer sur les nœuds

L'interface NodeIterator fournit des méthodes pour itérer sur des nœuds dans un arbre DOM.

Vu un document comme celui-ci:

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

On pourrait imaginer un itérateur pour obtenir les éléments <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);
}

Exemple adapté de l'exemple fourni par les contributeurs de Mozilla à partir de la document.createNodeIterator() sur le réseau de développeurs Mozilla, sous licence CC-by-SA 2.5 .

Cela enregistrera quelque chose comme:

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

Notez que ceci est similaire à l' itère TreeWalker, mais fournit uniquement la fonctionnalité nextNode() et previousNode() .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow