Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Document.createTreeWalker()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthode de créationDocument.createTreeWalker() renvoie un nouvel objetTreeWalker.
Dans cet article
Syntaxe
createTreeWalker(root)createTreeWalker(root, whatToShow)createTreeWalker(root, whatToShow, filter)Paramètres
rootUn
Node(noeud) racine de l'objetTreeWalker, qui est la valeur initiale deTreeWalker.currentNode.whatToShowFacultatifUn
unsigned longreprésentant un masque de bits créé par combinaison des propriétés de constante deNodeFilter. C'est un moyen pratique de filtrer pour certains types de noeuds. Il est par défaut0xFFFFFFFF, représentant la constanteNodeFilter.SHOW_ALL.Constante Valeur numérique Description NodeFilter.SHOW_ALL0xFFFFFFFFAffiche tous les noeuds. NodeFilter.SHOW_ATTRIBUTE0x2Affiche les noeuds Attr.NodeFilter.SHOW_CDATA_SECTION0x8Affiche les noeuds CDATASection.NodeFilter.SHOW_COMMENT0x80Affiche les noeuds Comment.NodeFilter.SHOW_DOCUMENT0x100Affiche les noeuds Document.NodeFilter.SHOW_DOCUMENT_FRAGMENT0x400Affiche les noeuds DocumentFragment.NodeFilter.SHOW_DOCUMENT_TYPE0x200Affiche les noeuds DocumentType.NodeFilter.SHOW_ELEMENT0x1Affiche les noeuds Element.NodeFilter.SHOW_ENTITYObsolète0x20Héritage, qui n'est plus en vigueur. NodeFilter.SHOW_ENTITY_REFERENCEObsolète0x10Héritage, qui n'est plus en vigueur. NodeFilter.SHOW_NOTATIONObsolète0x800Héritage, qui n'est plus en vigueur. NodeFilter.SHOW_PROCESSING_INSTRUCTION0x40Affiche les noeuds ProcessingInstruction.NodeFilter.SHOW_TEXT0x4Affiche les noeuds Text.Note :Étant donné que le parent de tout noeud
Attrest toujoursnull,TreeWalker.nextNode()etTreeWalker.previousNode()ne renverront jamais un noeudAttr. Pour parcourir les noeudsAttr, utilisez plutôtElement.attributes.filterFacultatifUne fonction de rappel ou un objet avec une méthode
acceptNode(), qui retourneNodeFilter.FILTER_ACCEPT,NodeFilter.FILTER_REJECT, ouNodeFilter.FILTER_SKIP. La fonction ou la méthode sera appelée pour chaque noeud de la sous-arborescence basée surrootqui est accepté comme incluse par l'indicateurwhatToShowpour déterminer s'il faut ou non l'inclure dans la liste des noeuds itérables :- Si la valeur retournée est
NodeFilter.FILTER_ACCEPT, ce noeud est inclus. - Si la valeur retournée est
NodeFilter.FILTER_REJECT, aucun noeud de la sous-arborescence basée sur ce noeud n'est inclus. - Si la valeur retournée est
NodeFilter.FILTER_SKIP, ce noeud n'est pas inclus.
- Si la valeur retournée est
Valeur de retour
Un nouvel objetTreeWalker.
Exemples
>UtiliserwhatToShow
Cet exemple utilisewhatToShow pour transformer les contenus textuels en majuscules. Notez que les noeuds textuels des descendants de l'élément#root sont également parcourus malgré le fait qu'ils ne soient pas des noeuds enfants de l'élément#root.
HTML
<div> Ceci est un noeud textuel. <span>Et ceci est un élément <code>span</code>.</span></div>CSS
span { background-color: aqua;}JavaScript
const treeWalker = document.createTreeWalker( document.querySelector("#root"), NodeFilter.SHOW_TEXT,);while (treeWalker.nextNode()) { const node = treeWalker.currentNode; node.data = node.data.toUpperCase();}Résultat
Utilisation du filtre
Cet exemple utilise un filtre pour échapper les contenus textuels. Pour tout noeud textuel, son contenu sera échappé en utilisantencodeURI() s'il est un descendant d'un élément.escape mais pas d'un élément.no-escape.
HTML
<div> <div> Ceci n'est pas échappé. <span>Mais ceci est échappé.</span> </div> <div>Ceci est échappé.</div> <div>Ceci n'est pas échappé.</div></div><hr /><div> <div> Ceci est échappé. <span>Mais ceci n'est pas échappé.</span> </div> <div>Ceci n'est pas échappé.</div></div><hr /><div> <div>Ceci n'est pas échappé.</div> <div>Ceci n'est pas échappé.</div></div>CSS
div { margin: 0.25em 0; padding: 0.25em;}span { display: inline-block;}.escape { border: dashed;}.no-escape { border: solid;}JavaScript
const treeWalker = document.createTreeWalker( document.body, NodeFilter.SHOW_ELEMENT, (node) => node.classList.contains("no-escape") ? NodeFilter.FILTER_REJECT : node.closest(".escape") ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP,);while (treeWalker.nextNode()) { for (const node of treeWalker.currentNode.childNodes) { if (node.nodeType === Node.TEXT_NODE && /\S/.test(node.data)) { // Exclure les noeuds textuels ne contenant que des espaces node.data = encodeURI(node.data.replace(/\s+/g, " ")); } }}Résultat
Spécifications
| Specification |
|---|
| DOM> # dom-document-createtreewalker> |
Compatibilité des navigateurs
Voir aussi
- L'interface de l'objet qu'il crée :
TreeWalker.