Signatur
Beschreibung
Die schreibgeschützte Eigenschaft lastElementChild liefert das letzte direkte Kind eines DocumentFragment, das ein Element ist. Text-, Kommentar- und andere Nicht-Element-Knoten werden übersprungen. Das ist der Unterschied zu lastChild, das jeden Knotentyp zurückgibt, also auch Leerraum-Textknoten.
Gebraucht wird die Eigenschaft vor allem, wenn DOM-Strukturen abseits des sichtbaren Dokuments aufgebaut oder geprüft werden. Typische Fälle sind der Inhalt eines <template>-Elements (template.content), ein mit Range.createContextualFragment() geparstes HTML-Stück oder ein Fragment, das man für das gebündelte Einfügen vieler Knoten vorbereitet.
Die Eigenschaft stammt aus dem Mixin ParentNode. Sie steht deshalb genauso auf Element und Document zur Verfügung. Nur direkte Kinder werden betrachtet, tiefer verschachtelte Nachfahren nicht.
Rückgabewert
null, wenn das Fragment keine Element-Kinder enthält.Beispiele
Letztes Element eines Fragments ermitteln
const fragment = new DocumentFragment();
['Äpfel', 'Birnen', 'Kirschen'].forEach((obst) => {
const li = document.createElement('li');
li.textContent = obst;
fragment.append(li);
});
// Ein abschließender Textknoten wird ignoriert
fragment.append('\n');
console.log(fragment.lastElementChild.textContent);
console.log(fragment.lastChild.nodeType); // 3 = Textknoten
Template-Inhalt prüfen und anpassen
// <template id="card">
// <h2>Titel</h2>
// <p>Text</p>
// <footer>Fußzeile</footer>
// </template>
const template = document.querySelector('#card');
const clone = template.content.cloneNode(true);
const last = clone.lastElementChild;
if (last?.tagName === 'FOOTER') {
last.textContent = `Stand: ${new Date().getFullYear()}`;
}
document.body.append(clone);
console.log(last.tagName);
Leeres Fragment und Fragment nur mit Text
const leer = new DocumentFragment();
console.log(leer.lastElementChild);
const nurText = document.createRange().createContextualFragment('Nur Text <!-- Kommentar -->');
console.log(nurText.lastElementChild);
console.log(nurText.childNodes.length);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
fragment.lastElementChild = elhat keine Wirkung und wirft im Strict Mode einenTypeError. Neue Elemente fügt man mitappend()oderappendChild()hinzu. - Das Fragment leert sich beim Einfügen: Wird ein Fragment mit
append()oderappendChild()ins Dokument eingefügt, wandern seine Kinder mit. Danach gibtlastElementChildnullzurück. Eine Referenz auf das Element sollte man sich daher vor dem Einfügen merken. - Nicht mit
lastChildverwechseln: Wegen der Leerzeichen und Zeilenumbrüche in HTML-Templates istlastChildoft ein Textknoten.lastElementChildliefert dagegen verlässlich ein Element. - Nur direkte Kinder: Verschachtelte Nachfahren werden nicht betrachtet. Für eine tiefere Suche eignet sich
querySelectorAll()in Verbindung mit.at(-1)auf dem umgewandelten Array. - Kompatibilität: Wird von allen modernen Browsern unterstützt. Der alte Internet Explorer bot die Eigenschaft auf
DocumentFragmentnicht an.