Signatur
Beschreibung
Die Eigenschaft root gibt den Node zurück, den Sie beim Aufruf von document.createTreeWalker(root, ...) als ersten Parameter übergeben haben. Dieser Knoten begrenzt den Teilbaum, den der TreeWalker durchläuft: Methoden wie parentNode(), nextNode() oder previousNode() verlassen diesen Bereich nie.
Der Wert ist schreibgeschützt und ändert sich während der Lebensdauer des TreeWalker nicht. Anders als currentNode, der sich beim Durchlaufen verschiebt, bleibt root immer gleich. Damit eignet sich die Eigenschaft gut, um den Ausgangspunkt eines Durchlaufs wiederherzustellen (walker.currentNode = walker.root) oder in Hilfsfunktionen zu prüfen, zu welchem Teilbaum ein übergebener Walker gehört.
Wichtig: Der Wurzelknoten selbst wird von nextNode() nicht zurückgegeben, da der Durchlauf bei ihm beginnt. Er wird auch nicht durch whatToShow oder den Filter ausgeschlossen – root liefert ihn immer, unabhängig vom Filter.
Rückgabewert
TreeWalker – exakt das Objekt, das an createTreeWalker() übergeben wurde.Beispiele
Wurzelknoten auslesen
const article = document.createElement('article');
article.innerHTML = '<h2>Titel</h2><p>Text</p>';
const walker = document.createTreeWalker(article, NodeFilter.SHOW_ELEMENT);
console.log(walker.root === article);
console.log(walker.root.nodeName);
Walker nach einem Durchlauf auf den Anfang zurücksetzen
const list = document.createElement('ul');
list.innerHTML = '<li>Eins</li><li>Zwei</li><li>Drei</li>';
const walker = document.createTreeWalker(list, NodeFilter.SHOW_TEXT);
const collect = () => {
const texts = [];
while (walker.nextNode()) texts.push(walker.currentNode.nodeValue);
return texts;
};
console.log(collect());
// Zurück zum Ausgangspunkt, damit ein zweiter Durchlauf funktioniert
walker.currentNode = walker.root;
console.log(collect());
root ist schreibgeschützt
'use strict';
const walker = document.createTreeWalker(document.body);
try {
walker.root = document.head;
} catch (err) {
console.log(err.name);
}
console.log(walker.root === document.body);
// Wichtig · Fallstricke
- Schreibgeschützt: Zuweisungen an
rootwerden im nicht-strikten Modus stillschweigend ignoriert, im strikten Modus lösen sie einenTypeErroraus. Für einen anderen Teilbaum müssen Sie einen neuenTreeWalkererzeugen. - Der Wurzelknoten ist nicht der erste Treffer von
nextNode(). Wer die Wurzel mitverarbeiten will, muss sie separat behandeln. - Wird die Wurzel aus dem Dokument entfernt, bleibt
roottrotzdem gültig – der Walker durchläuft dann den abgetrennten Teilbaum. currentNodekann per Zuweisung auch auf Knoten außerhalb vonrootgesetzt werden; danach verhalten sich die Navigationsmethoden relativ zu diesem Knoten. Ein Rücksetzen überwalker.currentNode = walker.rootist die sichere Variante.- Kompatibilität: wird von allen modernen Browsern (und seit IE9) unterstützt; in Node.js nur mit DOM-Implementierungen wie jsdom verfügbar.