【JavaScript / DOM】ノード / textContentプロパティ - ノードのテキストを変更する
JavaScript/DOMの『ノードのtextContentプロパティ』について解説します。
検証環境
textContentプロパティ
textContentプロパティはノードのテキスト値を表します。
このプロパティ値を変更した際の要素ノード、テキストノード、コメントノード、属性ノードの動作の違いについて確認します。
要素ノード
要素ノードのtextContent
プロパティ値を変更すると、ノード内が更新値で置き変わります。
<h1 id="title">JavaScriptとは</h1>
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
<p>主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。</p>
</div>
<script type="text/javascript">
let node = document.getElementById("title");
___ih_hl_start
node.textContent = "DOMについて";
___ih_hl_end
console.log(node);
</script>
<h1 id="title">DOMについて</h1>
この変更はブラウザのレンダリングテキストにも反映されます。
ただし、要素ノード含む全てのノードが置き変わってしまう点に注意が必要です。
例えば、上記サンプルのdiv要素(id属性がbox
)の値を更新すると、内部のコメントノードやp要素ノードが消えてしまいます。
<h1 id="title">JavaScriptとは</h1>
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
<p>主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。</p>
</div>
<script type="text/javascript">
___ih_diff_start
- let node = document.getElementById("title");
+ let node = document.getElementById("box");
___ih_diff_end
node.textContent = "DOMについて";
console.log(node);
</script>
<div id="box">DOMについて</div>
テキストノード
テキストノードのtextContent
プロパティ値を変更すると、ノード自体のテキストが変更されます。
<h1 id="title">JavaScriptとは</h1>
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let node = document.getElementById("box");
console.log(node.childNodes);
___ih_hl_start
node.childNodes[4].textContent = "DOMについて";
___ih_hl_end
console.log(node.childNodes[4]);
</script>
NodeList(5) [text, comment, text, p, text]
"DOMについて"
この変更はブラウザのレンダリングテキストにも反映されます。
コメントノード
コメントノードのtextContent
プロパティ値を変更すると、コメントテキストが変更されます。
<h1 id="title">JavaScriptとは</h1>
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
</div>
<script type="text/javascript">
let node = document.getElementById("box");
console.log(node.childNodes);
___ih_hl_start
node.childNodes[1].textContent = "DOMについて";
___ih_hl_end
console.log(node.childNodes[1]);
</script>
NodeList(5) [text, comment, text, p, text]
<!--DOMについて-->
コメントはブラウザに表示されませんが、ブラウザの開発ツール(検証ツール等)でHTMLドキュメントを確認すると、コメントのテキストが変わっていることが確認できます。
属性ノード
属性ノードのtextContent
プロパティ値を変更すると、属性値が変更されます。
<style>
#title {
color: red;
}
#header {
color: blue;
}
</style>
<h1 id="title">JavaScriptとは</h1>
<script type="text/javascript">
let node = document.getElementById("title");
console.log(node.attributes);
___ih_hl_start
node.attributes[0].textContent = "header";
___ih_hl_end
console.log(node.attributes[0]);
</script>
NamedNodeMap {0: id, id: id, length: 1}
id="header"
プレビューに表示された文字が青色であることから、変更後のheader
のスタイルが適用されていることが分かります。
また、ブラウザの開発ツール等のHTMLドキュメントで確認することも可能です。