概要: このチュートリアルでは、JavaScriptのtextContent
プロパティを使用して、ノードとその子孫のテキストコンテンツを取得する方法を学習します。
ノードからtextContentを読み取る
ノードとその子孫のテキストコンテンツを取得するには、textContent
プロパティを使用します。
let text = node.textContent;
Code language: JavaScript (javascript)
次のHTMLスニペットがあるとします。
<div id="note">
JavaScript textContent Demo!
<span style="display:none">Hidden Text!</span>
<!-- my comment -->
</div>
Code language: HTML, XML (xml)
次の例では、textContent
プロパティを使用して<div>
要素のテキストを取得します。
let note = document.getElementById('note');
console.log(note.textContent);
Code language: JavaScript (javascript)
動作の仕組み。
- まず、
getElementById()
メソッドを使用して、idがnote
であるdiv
要素を選択します。 - 次に、
textContent
プロパティにアクセスして、ノードのテキストを表示します。
出力
JavaScript textContent Demo!
Hidden Text!
出力から明らかなように、textContent
プロパティは、コメント(および処理命令)を除くすべての子ノードのtextContent
の連結を返します。
textContent vs. innerText
一方、innerText
はCSSスタイルを考慮し、人間が読み取れるテキストのみを返します。例えば
let note = document.getElementById('note');
console.log(note.innerText);
Code language: JavaScript (javascript)
出力
JavaScript textContent Demo!
ご覧のとおり、非表示のテキストとコメントは返されません。
innerText
プロパティは最新のCSSを使用してテキストを計算するため、アクセスするとリフローがトリガーされます。これは計算コストが高くなります。
リフローとは、ウェブブラウザがウェブページの一部または全体を再処理して描画する必要がある場合に発生します。
ノードのtextContentを設定する
textContent
の読み取りに加えて、textContent
プロパティを使用してノードのテキストを設定することもできます。
node.textContent = newText;
ノードでtextContent
を設定すると、ノードの子はすべて削除され、newText
値を持つ単一のテキストノードに置き換えられます。例えば
let note = document.getElementById('note');
note.textContent = 'This is a note';
Code language: JavaScript (javascript)
まとめ
- すべての子ノードの
textContent
の連結を返すには、textContent
プロパティを使用します。ノードのテキストを設定するためにも使用できます。 innerText
は、CSSを考慮した人間が読み取れるテキストを返します。
クイズ
このチュートリアルは役に立ちましたか?