Signatur
Beschreibung
Die schreibgeschützte Eigenschaft length liefert die Anzahl der Elemente, die eine HTMLAllCollection aktuell enthält. In der Praxis gibt es nur eine einzige Instanz dieser Schnittstelle: document.all. Sie enthält alle Elemente des Dokuments in Dokumentreihenfolge, einschließlich <html>, <head> und <body>.
Die Sammlung ist live. Das heißt, length passt sich automatisch an, wenn Elemente in den DOM eingefügt oder daraus entfernt werden. Einen Schnappschuss wie bei querySelectorAll() gibt es hier nicht.
document.all ist ein Überbleibsel aus der Zeit des Internet Explorer und nur noch aus Kompatibilitätsgründen spezifiziert. Für neuen Code nimmt man besser document.getElementsByTagName('*').length oder document.querySelectorAll('*').length. Die Eigenschaft ist trotzdem nützlich, wenn man alten Code versteht oder pflegt, der auf document.all aufbaut.
Rückgabewert
unsigned long) mit der Anzahl der Elemente in der Sammlung.Beispiele
Anzahl aller Elemente im Dokument ermitteln
// Zählt alle Elemente der aktuellen Seite
const anzahl = document.all.length;
console.log(`Die Seite enthält ${anzahl} Elemente.`);
// Moderne, gleichwertige Alternative
console.log(document.getElementsByTagName('*').length === anzahl);
Live-Verhalten beim Einfügen und Entfernen
const vorher = document.all.length;
const hinweis = document.createElement('div');
hinweis.textContent = 'Neuer Hinweis';
document.body.append(hinweis);
console.log(document.all.length - vorher); // 1
hinweis.remove();
console.log(document.all.length === vorher); // true
Über alle Elemente iterieren (Legacy-Code)
// Zählt die Tag-Namen in alter Schreibweise mit Index-Schleife
const statistik = {};
for (let i = 0; i < document.all.length; i++) {
const tag = document.all[i].tagName.toLowerCase();
statistik[tag] = (statistik[tag] ?? 0) + 1;
}
console.log(statistik);
// Wichtig · Fallstricke
- Merkwürdiges Verhalten bei der Wahrheitsprüfung:
document.allist das einzige Objekt, das als falsy gilt.typeof document.allergibt"undefined", unddocument.all == nullergibttrue. Die Eigenschaftlengthlässt sich trotzdem normal lesen. Eine Abfrage wieif (document.all)schlägt aber in allen modernen Browsern fehl. - Schreibgeschützt: Wer
lengtheinen Wert zuweist, bewirkt nichts. Im Strict Mode wird einTypeErrorausgelöst. - Live-Sammlung: Wenn Sie in einer Schleife Elemente entfernen oder einfügen, ändert sich
lengthwährend der Schleife. Legen Sie vorher mitArray.from(document.all)eine Kopie an. - Kompatibilität: Alle aktuellen Browser unterstützen die Eigenschaft. Sie gilt aber als veraltet und sollte in neuem Code nicht mehr verwendet werden. In Node.js gibt es sie nicht, ebenso wenig in den meisten DOM-Nachbildungen wie jsdom (dort nur eingeschränkt).