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 の断片です。
html
<div id="divA">This is <span>some</span> text!</div>
textContent を使用して、要素のテキストの内容を取得することができます。
js
let text = document.getElementById("divA").textContent;
// 変数 text の値は 'This is some text!' となります。
また、要素のテキストを設定するには、次のようにします。
js
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