Node.textContent

Lit ou définit tout le texte d’un élément, sans les balises HTML.

Renvoie
Une chaîne avec le texte de l’élément et de tous ses descendants.
Sur cette page

Exemple

#
JavaScript
const welcome = document.querySelector('#welcome')

console.log(welcome.textContent)
console.log(welcome.children.length)

welcome.textContent = 'Toutes les tâches sont terminées !'
console.log(welcome.children.length)
Console
Bonjour, Léa ! Tu as 3 nouvelles tâches.
2
0

Définition et utilisation

#

La propriété textContent renvoie le texte de l’élément avec celui de tous les éléments imbriqués, réunis en une seule chaîne. Les balises HTML sont ignorées et il ne reste que le contenu, espaces et retours à la ligne du code HTML compris.

Affecter une valeur à textContent supprime tout le contenu de l’élément et le remplace par un seul nœud de texte. Le texte est inséré littéralement : les caractères < et > ne créent pas de balises, ils apparaissent simplement à l’écran. C’est donc une façon sûre d’afficher des données venant de l’utilisateur.

La propriété voisine innerText tient compte des styles : elle ignore les éléments cachés et reproduit la mise en lignes visible à l’écran. Elle est cependant plus lente, car elle nécessite de calculer la mise en page. Pour un simple affichage de texte, préférez textContent.

Syntaxe

#
Syntaxe
const text = element.textContent
element.textContent = newText

Plus d’exemples

#
Le texte est inséré littéralement
JavaScript
const comment = document.querySelector('#comment')

comment.textContent = 'Utilisez la balise <strong> pour mettre le texte en gras'

console.log(comment.children.length)
console.log(comment.innerHTML)
Console
0
Utilisez la balise &lt;strong&gt; pour mettre le texte en gras
Les espaces du code HTML
JavaScript
const skills = document.querySelector('#skills')

console.log(JSON.stringify(skills.textContent))
console.log(skills.textContent.trim().split(/\s+/))
Console
"\n HTML\n CSS\n"
['HTML', 'CSS']

Les indentations et les retours à la ligne du code HTML sont eux aussi du texte, donc ils se retrouvent dans textContent. JSON.stringify() les affiche sous forme de \n et d’espaces, et trim() les supprime au début et à la fin.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Pour afficher du texte venant de l’utilisateur, utilisez textContent, pas innerHTML. Cela protège contre l’injection de code (une attaque XSS).
  • Le texte lu peut contenir des espaces et des retours à la ligne venant du code HTML. Nettoyez-le avec trim() si besoin.
  • Affecter element.textContent = "" est un moyen rapide de vider un élément.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.