Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Dokument: createTreeWalker()-Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Die Document.createTreeWalker() Erstellermethode gibt ein neu erstelltes TreeWalker-Objekt zurück.
Syntax
createTreeWalker(root)
createTreeWalker(root, whatToShow)
createTreeWalker(root, whatToShow, filter)
Parameter
root-
Ein
Node, der die Wurzel desTreeWalker-Objekts darstellt, was der Anfangswert vonTreeWalker.currentNodeist. whatToShowOptional-
Ein
unsigned long, der eine Bitmaske darstellt, die durch Kombinieren der Konstanten-Eigenschaften vonNodeFiltererstellt wird. Es ist eine bequeme Möglichkeit zum Filtern bestimmter Knotentypen. Standardmäßig ist es0xFFFFFFFF, was der KonstanteNodeFilter.SHOW_ALLentspricht.Konstante Numerischer Wert Beschreibung NodeFilter.SHOW_ALL0xFFFFFFFFZeigt alle Knoten an. NodeFilter.SHOW_ATTRIBUTE0x2Zeigt Attr-Knoten an.NodeFilter.SHOW_CDATA_SECTION0x8Zeigt CDATASection-Knoten an.NodeFilter.SHOW_COMMENT0x80Zeigt Comment-Knoten an.NodeFilter.SHOW_DOCUMENT0x100Zeigt Document-Knoten an.NodeFilter.SHOW_DOCUMENT_FRAGMENT0x400Zeigt DocumentFragment-Knoten an.NodeFilter.SHOW_DOCUMENT_TYPE0x200Zeigt DocumentType-Knoten an.NodeFilter.SHOW_ELEMENT0x1Zeigt Element-Knoten an.NodeFilter.SHOW_ENTITYVeraltet0x20Veraltet, nicht mehr wirksam. NodeFilter.SHOW_ENTITY_REFERENCEVeraltet0x10Veraltet, nicht mehr wirksam. NodeFilter.SHOW_NOTATIONVeraltet0x800Veraltet, nicht mehr wirksam. NodeFilter.SHOW_PROCESSING_INSTRUCTION0x40Zeigt ProcessingInstruction-Knoten an.NodeFilter.SHOW_TEXT0x4Zeigt Text-Knoten an.Hinweis: Die Konstante
NodeFilter.SHOW_ATTRIBUTEist nur wirksam, wenn die Wurzel ein Attributknoten ist. Da das übergeordnete Element einesAttr-Knotens immernullist, wirdTreeWalker.nextNode()undTreeWalker.previousNode()niemals einenAttr-Knoten zurückgeben. UmAttr-Knoten zu durchlaufen, verwenden Sie stattdessenElement.attributes. filterOptional-
Eine Rückruffunktion oder ein Objekt mit einer
acceptNode()-Methode, dieNodeFilter.FILTER_ACCEPT,NodeFilter.FILTER_REJECToderNodeFilter.FILTER_SKIPzurückgibt. Die Funktion oder Methode wird für jeden Knoten im Teilbaum basierend aufrootaufgerufen, der durch daswhatToShow-Flag als einbezogen akzeptiert wird, um zu bestimmen, ob er in die Liste der iterierbaren Knoten aufgenommen wird oder nicht:- Wenn der Rückgabewert
NodeFilter.FILTER_ACCEPTist, wird dieser Knoten einbezogen. - Wenn der Rückgabewert
NodeFilter.FILTER_REJECTist, wird kein Knoten im Teilbaum basierend auf diesem Knoten einbezogen. - Wenn der Rückgabewert
NodeFilter.FILTER_SKIPist, wird dieser Knoten nicht einbezogen.
- Wenn der Rückgabewert
Rückgabewert
Ein neues TreeWalker-Objekt.
Beispiele
>Verwendung von whatToShow
Dieses Beispiel verwendet whatToShow, um Textinhalte in Großbuchstaben umzuwandeln. Beachten Sie, dass die Textknoten der Nachkommen des #root-Elements ebenfalls durchlaufen werden, obwohl sie keine Kindknoten des #root-Elements sind.
HTML
<div id="root">
This is a text node.
<span>And this is a <code>span</code> element.</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();
}
Ergebnis
Verwendung von filter
Dieses Beispiel verwendet filter, um Textinhalte zu maskieren. Für jeden Textknoten werden seine Inhalte mit encodeURI() maskiert, wenn er ein Nachkomme eines .escape-Elements ist, aber nicht eines .no-escape-Elements.
HTML
<div>
<div>
This is not escaped. <span class="escape">But this is escaped.</span>
</div>
<div class="escape">This is escaped.</div>
<div class="no-escape">This is not escaped.</div>
</div>
<hr />
<div class="escape">
<div>
This is escaped. <span class="no-escape">But this is not escaped.</span>
</div>
<div class="no-escape">This is not escaped.</div>
</div>
<hr />
<div class="no-escape">
<div>This is not escaped.</div>
<div class="escape">This is not escaped.</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)) {
// Exclude whitespace-only text nodes
node.data = encodeURI(node.data.replace(/\s+/g, " "));
}
}
}
Ergebnis
Spezifikationen
| Specification |
|---|
| DOM> # dom-document-createtreewalker> |
Browser-Kompatibilität
Loading...
Siehe auch
TreeWalker: Verwandte Schnittstelle