innerText と textContent の違い

📋 目次(クリックで展開)
  • innerText ・・・ エンドユーザーから見えている情報を返す。
  • textContent ・・・ 改行や script タグを含めた情報を返す。

例えば、下記の HTML があった場合の innerText と textContent の取得結果を比較してみましょう。

<div id="myDiv">
<div>Lorem ipsum dolor sit amet,
consectetur</div>
<script>console.log("aaa---aaa");</script>
<style>*{background-color:transparent;}</style>
<div style="visibility:hidden"> adipiscing elit</div>
</div>
<input type="button" id="button1" value="innerText"/>
<input type="button" id="button2" value="textContent"/>

コンソールに出力した結果を見てみます。

— innerText —
Lorem ipsum dolor sit amet, consectetur

エンドユーザーから見えているとおりの情報が取得されます。script タグ、style タグは含まれません。 style が評価された結果が取得されています。このため style により非表示になっている部分は含まれていません。

— textContent —
            Lorem ipsum dolor sit amet,
            consectetur
            console.log(“aaa—aaa”);
         
            *{background-color:transparent;}
             adipiscing elit

エンドユーザーから見えていない情報が含まれています。script タグ、style タグが含まれています。 改行や空白文字もそのまま含んでいます。 innerText とは異なり、style は評価される前の情報になります。

リファレンス

MDN - Node.textContent
https://developer.mozilla.org/ja/docs/Web/API/Node/textContent


💬 コメント