Signatur
Beschreibung
Die Eigenschaft textContent des Node-Interfaces repräsentiert den Textinhalt des Nodes und seiner Nachkommen.
Hinweis: textContent und HTMLElement.innerText werden leicht verwechselt, die beiden Eigenschaften unterscheiden sich jedoch in wichtigen Punkten.
Wert
Ein String oder null. Der Wert hängt von der Situation ab:
- Wenn der Node ein
documentoder ein doctype ist, gibttextContentnullzurück.Hinweis: Um den gesamten Text und die CDATA-Daten des kompletten Dokuments zu erhalten, verwende
document.documentElement.textContent. - Wenn der Node ein CDATA-Abschnitt, ein Kommentar, eine Processing Instruction oder ein Text-Node ist, gibt
textContentden Text innerhalb des Nodes zurück bzw. setzt ihn, d.h. denNode.nodeValue. - Für andere Node-Typen gibt
textContentdie Verkettung destextContentjedes Kind-Nodes zurück, ausgenommen Kommentare und Processing Instructions. (Dies ist ein leerer String, wenn der Node keine Kinder hat.)
Warnung: Das Setzen von textContent auf einem Node entfernt alle Kinder des Nodes und ersetzt sie durch einen einzigen Text-Node mit dem angegebenen String-Wert.
Unterschiede zu innerText
Verwechsle nicht die Unterschiede zwischen Node.textContent und HTMLElement.innerText. Obwohl die Namen ähnlich erscheinen, gibt es wichtige Unterschiede:
textContentliefert den Inhalt aller Elemente, einschließlich<script>- und<style>-Elementen. Im Gegensatz dazu zeigtinnerTextnur "menschenlesbare" Elemente.textContentgibt jedes Element im Node zurück. Im Gegensatz dazu berücksichtigtinnerTextdas Styling und gibt keinen Text von "versteckten" Elementen zurück.- Da
innerTextzudem CSS-Styles berücksichtigt, löst das Lesen des Wertes voninnerTexteinen Reflow aus, um aktuelle berechnete Styles sicherzustellen. (Reflows können rechenintensiv sein und sollten daher möglichst vermieden werden.)
- Da
Unterschiede zu innerHTML
Element.innerHTML liest oder setzt HTML, wie der Name andeutet. Wir raten davon ab, innerHTML zum Lesen oder Setzen von Text innerhalb eines Elements zu verwenden, da es mit rohem HTML statt mit reinem Text arbeitet und anfällig für XSS-Angriffe sein kann. Selbst wenn du sicher bist, dass der Text niemals HTML-Syntax enthält, ist es dennoch weniger semantisch und langsamer, da der HTML-Parser aufgerufen werden muss.
Beispiele
textContent lesen
let text = document.getElementById("divA").textContent;
// Die Variable text ist jetzt: 'This is some text!'
textContent setzen
document.getElementById("divA").textContent = "This text is different!";
// Das HTML für divA ist jetzt:
// <div id="divA">This text is different!</div>