【JavaScript】テキストの取得をしてみよう(innerHTML/textContent)
おはようございます。タカヒデです。
本日は、「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プロパティ」が多くの場合に使われるとお伝えしたんですけどね。)
| innerHTML | textContent | |
|---|---|---|
| 取り出すときの挙動 | タグごと取り出し (例) <p>テストメッセージ</p> | テキストだけを取り出し (例) テストメッセージ |
| 速度 | 時間がかかる (テキストの解析が必要なため) | 高速 (テキストの解析が不要なため) |
| 安全性 (セキュリティの高さ) | 低い (ユーザが入力したスクリプトが 実行できてしまう) | 高い (ユーザが入力したスクリプトは 実行できない) |
| 実務での利用頻度 | 低い | 高い |
このように、『実行速度』『安全性』の観点から、特別な理由がない限り『textContentプロパティ』を使用することが多いようです。
皆さんも『textContentプロパティ』から活用していく方が無難かと思います。
まとめ
以上が「『テキストの取得』について、『innerHTMLプロパティ』『textContentプロパティ』」でした。
- テキストの取得には『innerHTMLプロパティ』『textContentプロパティ』を使用
- 速度、安全性の観点から特別な理由がない限りは『textContentプロパティ』を使用すべき
この記事が誰かの参考になれば幸いです。
お疲れさまでした。
