【JavaScript】 違いは?「textContent」「innerText」「innerHTML」

この記事は約4分で読めます。
記事内に広告が含まれています

ウェブサイトの画面

こんにちは、さち です。

JavaScript」を使ってテキストを「取得/書き換え」するときに使う、textContent innerText innerHTMLプロパティ。複数あってどれを使えば良いのかややこしい……。

そこで今回は、textContent innerText innerHTML 3つのプロパティの違いを確認していきます。使い分けの参考になれば幸いです。

スポンサーリンク

「取得」での違い

HTML・CSS

<div id="target">
  【テキスト】<br>【←改行】	【←Tab】【<span>隠す</span>】  
</div>
span { display: none; }

「CSS」によって <span>非表示にしています。

JavaScript

const target = document.getElementById('target');

console.dir({
  innerHTML  : target.innerHTML,
  innerText  : target.innerText,
  textContent: target.textContent
});

結果&まとめ

innerHTML  : "\n  【テキスト】<br>【←改行】\t【←Tab】【<span>隠す</span>】  \n"
innerText  : "【テキスト】\n【←改行】 【←Tab】【】"
textContent: "\n  【テキスト】【←改行】\t【←Tab】【隠す】  \n"

それぞれのプロパティで「改行」「スペース」「非表示の要素」に対する挙動が異なります。

基本的に、innerHTML は HTML 形式で忠実に取得、textContent はテキスト関連を忠実に取得、innerText は中途半端でややこしい感じです。

少し複雑なので、表にまとめてみました。

<br> 改行 \n 改行 スペース 非表示の要素
innerHTML 取得 取得 取得 取得
(HTML形式)
innerText 取得
\n に変換)
半角1個に置換
(行頭行末は消去)
textContent 取得 取得 取得
(テキストだけ)

「書き換え」での違い

HTML

<div class="target">innerHTML</div>
<div class="target">innerText</div>
<div class="target">textContent</div>

JavaScript

const target = document.getElementsByClassName('target');
const text = '【テキスト】<br>【←br】\n【←n】&micro;【←エンティティ】';

target[0].innerHTML   = text;
target[1].innerText   = text;
target[2].textContent = text;

結果&まとめ

HTML の描画結果はこのようになります。

ウェブサイトの画面

それぞれのプロパティで「改行」「エンティティ」に対する挙動が異なります。

基本的に、innerHTML は HTML 形式で忠実に反映、textContent はテキスト関連を忠実に反映、innerText は中途半端でややこしい感じです。

少し複雑なので、表にまとめてみました。

<br> 改行 \n 改行 エンティティ
innerHTML 反映 ソースに反映 反映
innerText <br> に変換して反映
textContent ソースに反映

コメント

タイトルとURLをコピーしました