--- title: Node.textContent slug: Web/API/Element/textContent tags: - API - Command API - DOM - Proprietà - Referenza translation_of: Web/API/Node/textContent ---
La proprietà textContent dell'interfaccia {{domxref("Node")}} rappresenta il contenuto del testo di un nodo e dei suoi discendenti.
Note: textContent e {{domxref("HTMLElement.innerText")}} sono facilmente confusi, ma i due sono diversi in modi molto importanti.
var text = Node.textContent; Node.textContent = string;
Una stringa o null.
Quando ottieni questa proprietà:
textContent ritorna null. (Per ottenere tutto il testo e i dati CDATA per l'intero documento, si potrebbe usare document.documentElement.textContent.)textContent restituisce il testo all'interno del nodo, cioè {{domxref("Node.nodeValue")}}.textContent restituisce la concatenazione del textContent di ogni nodo figlio, esclusi i commenti e le istruzioni di elaborazione. Questa è una stringa vuota se il nodo non ha figli.L'impostazione di textContent su un nodo rimuove tutti i figli del nodo e li sostituisce con un singolo nodo di testo con il valore di stringa specificato.
Non lasciarti confondere dalle differenze tra Node.textContent e {{domxref("HTMLElement.innerText")}}. Anche se i nomi sembrano simili, ci sono differenze importanti:
textContent ottiene il contenuto di tutti gli elementi, compresi gli elementi {{HTMLElement("script")}} e {{HTMLElement("style")}}. Al contrario, innerText mostra solo elementi "leggibili".textContent restituisce ogni elemento nel nodo. Al contrario, innerText è consapevole dello stile e non restituirà il testo di elementi "nascosti". Inoltre, poiché innerText prende in considerazione gli stili CSS, la lettura del valore di innerText aziona un reflow per garantire stili aggiornati. (I reflow possono essere computazionalmente costosi, e quindi dovrebbero essere evitati quando possibile.)textContent, la modifica di innerText in Internet Explorer (versione 11 e inferiore) rimuove i nodi figlio dall'elemento e distrugge in modo permanente tutti i nodi di testo discendenti. È impossibile inserire nuovamente i nodi in qualsiasi altro elemento o nello stesso elemento.{{domxref("Element.innerHTML")}} restituisce HTML, come indica il nome. A volte le persone usano innerHTML per recuperare o scrivere testo all'interno di un elemento, ma textContent ha prestazioni migliori perché il suo valore non viene analizzato come HTML. Inoltre, l'utilizzo di textContent può impedire gli attacchi XSS.
Dato questo codice HTML:
<div id="divA">Questo è <span>un</span> testo!</div>
...puoi usare textContent per ottenere il contenuto del testo dell'elemento:
let text = document.getElementById('divA').textContent;
// La variabile text è ora: "Questo è un testo!"
...o imposta il contenuto del testo dell'elemento:
document.getElementById('divA').textContent = 'Questo testo è diverso!';
// L'HTML per divA è ora:
// <div id="divA">Questo testo è diverso!</div>
// Source: Eli Grey @ https://eligrey.com/blog/post/textcontent-in-ie8
if (Object.defineProperty
&& Object.getOwnPropertyDescriptor
&& Object.getOwnPropertyDescriptor(Element.prototype, "textContent")
&& !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) {
(function() {
var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText");
Object.defineProperty(Element.prototype, "textContent",
// Passare innerText o innerText.get direttamente non funziona,
// è richiesta la funzione wrapper.
{
get: function() {
return innerText.get.call(this);
},
set: function(s) {
return innerText.set.call(this, s);
}
}
);
})();
}
{{Compat("api.Node.textContent")}}
| Specifica | Stato | Commento |
|---|---|---|
| {{SpecName('DOM WHATWG','#dom-node-textcontent','Node.textContent')}} | {{Spec2('DOM WHATWG')}} | Nessun cambiamento vs. DOM4 |
| {{SpecName('DOM4','#dom-node-textcontent','Node.textContent')}} | {{Spec2('DOM4')}} | |
| {{SpecName('DOM3 Core','core.html#Node3-textContent','Node.textContent')}} | {{Spec2('DOM3 Core')}} | Introdotto |
innerText e textContent (blog post)