Node: textContent プロパティ
textContent
は Node
のプロパティで、ノードおよびその子孫のテキストの内容を表します。
メモ: textContent
と HTMLElement.innerText
は混同しやすいものですが、2 つのプロパティは重要な点が異なります。
値
文字列または null
です。値は場面によります。
-
ノードが
document
または doctype である場合、textContent
はnull
を返します。メモ: 文書全体のすべてのテキストと CDATA データを取得するには、
document.documentElement.textContent
を使用する方法があります。 -
ノードが CDATA セクション、コメント、処理命令ノード、テキストノードの場合、
textContent
はそのノードの内側のテキスト、すなわちNode.nodeValue
を返します。 -
他のノード型の場合、
textContent
は、コメントと処理命令ノードを除く、すべての子ノードのtextContent
属性値を連結したものを返します。(ノードが子を持たない場合、これは空文字列になります。)
警告:
ノードの textContent
を設定すると、そのノードのすべての子が取り除かれて、指定された値を持つ単一のテキストノードに置き換わります。
innerText との違い
Node.textContent
と HTMLElement.innerText
の間の違いに混乱しないでください。名前は似ているようですが、重要な違いがあります。
innerHTML との違い
Element.innerHTML
は、その名が示すとおり HTML を返します。時に、innerHTML
を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、textContent
は値が HTML として解析されないので性能が良くなります。
さらに、textContent
を使用することで XSS 攻撃を防ぐことができます。
例
最初は HTML の断片です。
<div id="divA">This is <span>some</span> text!</div>
textContent
を使用して、要素のテキストの内容を取得することができます。
let text = document.getElementById("divA").textContent;
// 変数 text の値は 'This is some text!' となります。
また、要素のテキストを設定するには、次のようにします。
document.getElementById("divA").textContent = "This text is different!";
// divA の HTML は次のようになります。
// <div id="divA">This text is different!</div>
仕様書
Specification |
---|
DOM Standard # dom-node-textcontent |
ブラウザーの互換性
BCD tables only load in the browser