1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】備忘録② innerHTML、innerText、textContentの違いについて

Posted at

JavaScriptを使ってHTMLのテキストを操作しようと思ったとき、使うものとして出てくるのが「innerHTML」「textContent」「innerText」だと思います。3つもあるけど、どれを使ったらいいの!?となることがありましたので、改めてそれぞれの特徴と用途をまとめたいと思います!

◆innerHTML

要素内のHTMLを含むすべての内容を取得または更新することができます。

HTMLタグをそのまま文字列として取得・更新できます。
JavaScriptで要素を動的に生成したい場合に便利。
ただし、外部から提供された値を直接設定すると、XSS(クロスサイトスクリプティング)の脆弱性に繋がる可能性があるため注意が必要です。

*クロスサイトスクリプティング(XSS) とは??
攻撃者が悪意のあるスクリプトをウェブページに挿入する攻撃のこと。ユーザーがそのページを表示すると、悪意のあるスクリプトが実行され、ユーザーのデータが盗まれたり、他の悪意のある操作が行われたりする可能性があります。

◆用途
HTMLコンテンツ全体(タグを含む)を取得または更新する場合。
特に要素内のHTMLを動的に変更したい場合。

◆innerText

要素内の表示されているテキストを取得します。
ただし、CSSスタイルによって非表示になっているテキスト
(たとえば、display: noneの要素のテキスト)は含まれません。

textContentに似ていますが、ブラウザ上で
ユーザーに見えている内容のみを操作します。
見た目に依存する内容を取得したい場合に有効。

◆用途
ユーザーに表示されているテキストだけを操作したい場合。

◆textContent

要素内のテキスト内容(すべての子要素を含む)を取得または更新します。

HTMLタグは無視され、純粋なテキストのみを操作します。
HTMLとして解釈されることはないため、セキュリティリスクが少ない。
レンダリングされていない隠し要素も含めて取得します。

◆用途
HTML構造を無視して、純粋なテキストを取得・設定する場合。

まとめ

HTMLタグ CSSの影響 主な用途
innerHTML 表示する 受けない HTML構造全体を操作する
textContent 表示しない 受けない 純粋なテキストを取得・設定する
innerText 表示しない 受ける 表示されているテキストを取得・設定する

使い分けのポイント

  • HTML構造を操作したい場合
    → innerHTMLを使用(ただし、入力内容の検証を忘れずに)

  • 純粋なテキストを扱いたい場合
    → textContentを使用

  • 表示内容に基づいて操作したい場合
    → innerTextを使用

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?