Signatur
Beschreibung
Die schreibgeschützte Eigenschaft document.images gibt eine HTMLCollection mit allen <img>-Elementen des Dokuments zurück, in Dokumentreihenfolge. Sie ist ein bequemer Kurzweg für document.getElementsByTagName("img") und stammt noch aus der Frühzeit des DOM.
Die Sammlung ist live: Werden Bilder per JavaScript hinzugefügt oder entfernt, spiegelt die Collection das sofort wider. Einzelne Elemente erreicht man per Index (images[0]), mit item() oder über namedItem() bzw. direkt über den id- oder name-Wert (images.logo).
Typische Einsatzfälle sind das Prüfen fehlender alt-Texte, das Nachladen oder Austauschen von Bildquellen, das Warten auf vollständig geladene Bilder oder schnelle Analysen in der Entwicklerkonsole. Beachte: Nur echte <img>-Elemente werden erfasst – <picture>-Container, <svg>, <input type="image"> oder CSS-Hintergrundbilder nicht.
Rückgabewert
HTMLCollection aller <img>-Elemente des Dokuments. Ist kein Bild vorhanden, ist die Sammlung leer (length === 0), niemals null.Beispiele
Bilder ohne alt-Text finden (Barrierefreiheit)
// HTMLCollection in ein Array umwandeln, um filter() zu nutzen
const ohneAlt = Array.from(document.images)
.filter((img) => !img.hasAttribute("alt"));
console.log(`${ohneAlt.length} von ${document.images.length} Bildern ohne alt-Attribut`);
ohneAlt.forEach((img) => console.warn("Fehlender alt-Text:", img.src));
Warten, bis alle Bilder geladen sind
const warteAufBilder = () =>
Promise.all(
[...document.images].map((img) =>
img.complete
? Promise.resolve(img)
: new Promise((resolve) => {
img.addEventListener("load", () => resolve(img), { once: true });
img.addEventListener("error", () => resolve(img), { once: true });
})
)
);
const bilder = await warteAufBilder();
const kaputt = bilder.filter((img) => img.naturalWidth === 0);
console.log(`Geladen: ${bilder.length}, fehlerhaft: ${kaputt.length}`);
Live-Verhalten und Zugriff per id
// <img id="logo" src="logo.svg" alt="Logo"> sei im Dokument vorhanden
const bilder = document.images;
console.log(bilder.length); // z. B. 1
console.log(bilder.logo.alt); // Zugriff über id
console.log(bilder.namedItem("logo") === bilder[0]);
const neu = new Image(100, 100);
neu.src = "platzhalter.png";
document.body.append(neu);
// Die Collection aktualisiert sich automatisch
console.log(bilder.length);
// Wichtig · Fallstricke
- Live-Collection: Wer in einer Schleife Bilder entfernt, während er über
document.imagesiteriert, überspringt Elemente, weil sich Indizes verschieben. Vorher mitArray.from()oder Spread-Syntax eine statische Kopie anlegen. - Kein Array:
HTMLCollectionhat keinmap(),filter()oderforEach().for...offunktioniert in allen modernen Browsern. - Schreibgeschützt: Eine Zuweisung an
document.imageswird ignoriert (im Strict Mode ohne Fehler, da es nur einen Getter gibt). - Umfang: Nur
<img>-Elemente im Hauptdokument werden erfasst – keine Bilder iniframes, Shadow-DOM-Bäumen, SVG-<image>oder CSS-Hintergründen. Für flexiblere Auswahldocument.querySelectorAll("img")(statischeNodeList) verwenden. - Lazy Loading: Bilder mit
loading="lazy"sind in der Sammlung enthalten, auch wenn sie noch nicht geladen sind;completeundnaturalWidthspiegeln dann den Ladezustand wider. - Kompatibilität: In allen Browsern seit jeher unterstützt; nur in HTML-Dokumenten sinnvoll verfügbar.