[Edge]。→、
Node のテキスト内容(子孫も含まれる)を文字列で取得/設定します。
innerText とは異なります。
mdn: メモ: textContent と HTMLElement.innerText は混同しやすいものですが、2つのプロパティは重要な点が異なります。
Node | Node。 |
---|
文字列、または null。
textContent の値は状況によります。
メモ: 文書全体のすべてのテキストと CDATA データを取得するには、document.documentElement.textContent を使用する方法があります。
ノードの textContent を設定すると、そのノードのすべての子が取り除かれて、指定された値をもつ単一のテキスト ノードに置き換わります。
Node.textContent と HTMLElement.innerText は似ているようですが、重要な違いがあります。
textContent は、<script> と <style> 要素を含む、すべての要素の内容を取得します。一方、innerText は「人間が読める」要素のみを示します。
textContent はノード内のすべての要素を返します。一方、innerText はスタイルを反映し、「非表示」の要素のテキストを返しません。
もっと言えば、innerText は CSS のスタイルを考慮するので、innerText の値を読み取ると最新の計算されたスタイルを保証するために、再フローを起動します。(再フローは計算が重いので、可能であれば避けるべきです。)
textContent とは異なり、innerText を Internet Explorer(バージョン 11 まで)で変更すると、要素から子ノードを削除するだけでなく、子孫のテキストノードを完全に破棄します。他の要素または同じ要素にノードをもう一度挿入することは不可能です。
Element.innerHTML は、その名が示すとおり HTML を返します。時に、innerHTML を使用して要素内のテキストを受け取ったり書き込んだりすることがありますが、textContent は値が HTML として解析されないので性能が良くなります。
さらに、textContent を使用することで XSS 攻撃を防ぐことができます。
HTML:
<SPAN id=IdTest>[SPAN要素。<B id=IdB>[B要素]</B>テキスト]</SPAN>
JavaScript:
IdB.style.display="none"; //IdB の表示を消す。 D=IdTest.textContent; //=[string]:[SPAN要素。[B要素]テキスト] DA=IdTest.innerText; //=[string]:[SPAN要素。テキスト]
JavaScript: HTMLを表示してから実行。
IdB.hidden=true; //IdB の表示を消す。 D=IdTest.textContent; //=[string]:[SPAN要素。[B要素]テキスト] DA=IdTest.innerText; //=[string]:[SPAN要素。テキスト]
→hidden。
JavaScript: 値の設定。
IdTest.textContent="テスト\\rテキスト<B>B要素?</B>£"
表示結果:
JavaScript: innerText での設定。
IdTest.innerText="テスト\\rテキスト<B>B要素?</B>£"