Signatur
Beschreibung
Die schreibgeschützte Eigenschaft length liefert, wie viele Knoten eine NodeList enthält. Eine NodeList bekommst du z. B. von document.querySelectorAll(), Node.childNodes oder document.getElementsByName(). Ist die Liste leer, ist length gleich 0.
Typische Einsatzfälle sind klassische for-Schleifen über die Liste, die Prüfung, ob ein Selektor überhaupt etwas gefunden hat (if (list.length)), und der Zugriff auf das letzte Element über list[list.length - 1].
Wichtig ist der Unterschied zwischen statischen und lebenden NodeLists: querySelectorAll() gibt eine statische Liste zurück, deren length sich nach späteren DOM-Änderungen nicht mehr ändert. childNodes und getElementsByName() liefern dagegen eine lebende Liste, deren length sich sofort anpasst, wenn Knoten hinzugefügt oder entfernt werden.
Rückgabewert
NodeList.Beispiele
Prüfen, ob ein Selektor Treffer hat
const buttons = document.querySelectorAll('button.primary');
if (buttons.length === 0) {
console.log('Keine primären Buttons gefunden');
} else {
console.log(`${buttons.length} primäre Buttons gefunden`);
}
Klassische for-Schleife und letztes Element
const items = document.querySelectorAll('ul#todo > li');
for (let i = 0; i < items.length; i++) {
items[i].dataset.index = String(i);
}
const last = items[items.length - 1];
console.log(last?.textContent ?? 'Liste ist leer');
Lebende vs. statische NodeList
const list = document.createElement('ul');
list.append(document.createElement('li'));
const live = list.childNodes; // lebend
const stat = list.querySelectorAll('li'); // statisch
list.append(document.createElement('li'));
console.log(live.length); // passt sich an
console.log(stat.length); // bleibt beim alten Stand
Lebende Liste sicher leeren
const container = document.querySelector('#container');
const children = container.childNodes;
// length schrumpft bei jedem Entfernen – daher while statt for mit Index
while (children.length > 0) {
container.removeChild(children[0]);
}
console.log(children.length);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
list.length = 0wird ignoriert (im Strict Mode gibt es einenTypeError), die Liste wird dadurch nicht geleert. - Lebende Listen: Wenn du bei
childNodesin einerfor-Schleife miti < list.lengthKnoten entfernst, ändert sichlengthwährend der Schleife. Dadurch werden Elemente übersprungen. Lege vorher mitArray.from(list)eine Kopie an oder nutze einewhile-Schleife. - Textknoten zählen mit:
childNodes.lengthzählt auch Leerraum-Textknoten und Kommentare. Wenn du nur Elemente zählen willst, nimmelement.children.lengthoderelement.childElementCount. - Die Eigenschaft wird in allen Browsern unterstützt, ohne Einschränkungen.