Start · Sprachen · JavaScript · Referenz · TreeWalker.root

TreeWalker.root

Eigenschaft

Die schreibgeschützte Eigenschaft <code>TreeWalker.root</code> liefert den Wurzelknoten, der beim Erzeugen des <code>TreeWalker</code> festgelegt wurde.

seit JavaScript Baseline: alle Browser (DOM Level 2 Traversal) Kategorie: webapi

Signatur

TreeWalker.root

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

Typ
Node
Beschreibung
Der Wurzelknoten des 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);
true ARTICLE

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());
["Eins", "Zwei", "Drei"] ["Eins", "Zwei", "Drei"]

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);
TypeError true

// Wichtig · Fallstricke

  • Schreibgeschützt: Zuweisungen an root werden im nicht-strikten Modus stillschweigend ignoriert, im strikten Modus lösen sie einen TypeError aus. Für einen anderen Teilbaum müssen Sie einen neuen TreeWalker erzeugen.
  • 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 root trotzdem gültig – der Walker durchläuft dann den abgetrennten Teilbaum.
  • currentNode kann per Zuweisung auch auf Knoten außerhalb von root gesetzt werden; danach verhalten sich die Navigationsmethoden relativ zu diesem Knoten. Ein Rücksetzen über walker.currentNode = walker.root ist 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.