JavaScript

【JavaScript】テキストの取得をしてみよう(innerHTML/textContent)

takahide

おはようございます。タカヒデです。

本日は、「JavaScriptにおける、『テキストの取得』について、『innerHTMLプロパティ』『textContentプロパティ』」を紹介します。

こんな人にオススメ
  • JavaScriptにおける『テキストの取得』が理解できない
  • 『innerHTMLプロパティ』『textContentプロパティ』の記載方法を知りたい

ここでは2つの方法を紹介します。

ぜひ本記事を参考にしてください。

テキストの取得方法①(innerHTMLプロパティ)

早速ですが、要素内のテキストを取得するには「innerHTMLプロパティ」を使用します。

記載方法に移る前に、この「テキストの取得」ってどのようなときに使うのかを考えてみましょう。
結構どこでも使っていそうですが、いざ具体的な活用イメージとなると難しいですね。

例えば、こんなことで使うみたいです。

  • エラーメッセージの内容を表示する
    • (例)入力された「aaa@ccc.com」は不正です
  • テーブルの値を取得して合計・判定する
    • (例)1,000円、2,000円などの価格を取得してダッシュボードに表示

特に1つ目のエラーメッセージ表示なんかはかなりイメージもつきやすいですね。

話を戻します。
記載方法を見ていきましょう。

//記載方法

要素.innerHTML

シンプルですね。

では実際の記載例を見ていきます。
ここではHTMLに記載された『test』クラスのテキストを取得します。

<div class="test">
  <p>テストメッセージ</p>
</div>
let test = document.querySelector(".test")
console.log(test.innerHTML);
//実行結果:<p>テストメッセージ</p>

見てわかるように、『<p>テストメッセージ</p>』という形でタグごとテキストを取得しています。

後ほど紹介しますが、「innerHTMLプロパティ」は「HTML構造を再利用したいとき」だけ限定的に使われるものなので、利用用途は限られるようです。

テキストの取得方法②(textContentプロパティ)

続いての方法として「textContentプロパティ」を使用します。

テキストを取得する場合は、こちらの「textContentプロパティ」が多くの場合に使われるようです。

こちらも記載方法を見ていきます。
ですが、記載方法としては「innerHTMLプロパティ」と基本的には変わりません。

//記載方法

要素.textContent

使い方は全く同じですね。

同じように記載例を見ていきます。
ここでもHTMLに記載された『test』クラスのテキストを取得します。

<div class="test">
  <p>テストメッセージ</p>
</div>
let test = document.querySelector(".test")
console.log(test.textContent);
//実行結果:テストメッセージ

やっている処理は全く同じですが、『テストメッセージ』という形でテキストのみを取得しています。

これが、「innerHTMLプロパティ」と「textContentプロパティ」のようですね。

innerHTML/textContentの比較

ここまで、テキストの取得方法として『innerHTMLプロパティ』『textContentプロパティ』を紹介しました。

では実際に活用するとき、どちらを使っていけばよいのでしょうか?

それぞれの違いを以下の表に記載します。
(まあ先ほど「textContentプロパティ」が多くの場合に使われるとお伝えしたんですけどね。)

innerHTMLtextContent
取り出すときの挙動 タグごと取り出し
(例)  <p>テストメッセージ</p>
テキストだけを取り出し
(例)  テストメッセージ
速度時間がかかる
(テキストの解析が必要なため)
高速
(テキストの解析が不要なため)
安全性 (セキュリティの高さ)低い
(ユーザが入力したスクリプトが 実行できてしまう)
高い
(ユーザが入力したスクリプトは 実行できない)
実務での利用頻度低い高い

このように、『実行速度』『安全性』の観点から、特別な理由がない限り『textContentプロパティ』を使用することが多いようです。

皆さんも『textContentプロパティ』から活用していく方が無難かと思います。

まとめ

以上が「『テキストの取得』について、『innerHTMLプロパティ』『textContentプロパティ』」でした。

まとめ
  • テキストの取得には『innerHTMLプロパティ』『textContentプロパティ』を使用
  • 速度、安全性の観点から特別な理由がない限りは『textContentプロパティ』を使用すべき

この記事が誰かの参考になれば幸いです。

お疲れさまでした。

ABOUT ME
タカヒデ
タカヒデ
ITを楽しく勉強中
通信会社の企画職で働く30代 非エンジニアでありながら半分趣味でITエンジニアリングやプログラミングを学習中 IT初心者が楽しいと思えるように発信することを目指しています ↓Xもやっているのでフォローしてね
記事URLをコピーしました