言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. HTML要素.textContent

HTML要素.textContent

対応: DOM Level 3(2004)

HTML要素内のテキストを取得、または設定します。HTMLタグは解釈されず、純粋なテキストとして扱われます。

構文

// テキストを取得します。
var text = element.textContent;

// テキストを設定します。
element.textContent = "新しいテキスト";

サンプルコード

sample_textContent.html
<p id="pilot"><strong>綾波レイ</strong> — <em>NERV</em></p>
<div id="profile">
	<span>碇シンジ</span>
	<span style="display: none;">初号機パイロット</span>
</div>
<p id="output"></p>
sample_textContent.js
// パターン1: HTMLタグを無視してテキストのみを取得する
var pilot = document.getElementById("pilot");
console.log(pilot.textContent); // 『綾波レイ — NERV』と出力されます(タグは含まれません)。

// パターン2: 非表示要素も含めてすべてのテキストを取得する
var profile = document.getElementById("profile");
console.log(profile.textContent); // 『碇シンジ初号機パイロット』と出力されます(非表示テキストも含まれます)。

// パターン3: テキストを設定する(HTMLタグは文字列として表示される)
var output = document.getElementById("output");
output.textContent = "エヴァンゲリオン初号機パイロット: <strong>碇シンジ</strong>";
// 画面には「エヴァンゲリオン初号機パイロット: <strong>碇シンジ</strong>」とそのまま表示されます。

// パターン4: ユーザー入力をそのまま表示する(XSS対策になる)
var userInput = '<img src=x onerror="alert(1)">';
output.textContent = userInput; // タグはエスケープされ、文字列として安全に表示されます。

サンプルページはこちら

textContentとinnerHTMLの違い

プロパティ概要
textContentHTMLタグを解釈しません。テキストのみを扱うため安全です。ユーザーが入力した値を表示する場合に適しています。
innerHTMLHTMLタグを解釈します。HTMLを動的に挿入したい場合に使用しますが、ユーザーの入力値をそのまま挿入すると、悪意のあるスクリプトが実行されてしまう危険性があります。XSSについては『HTML要素.innerHTML』のページを参照してください。

概要

『HTML要素.textContent』はHTML要素のテキスト内容を取得・設定するためのプロパティです。取得時には子要素のタグをすべて無視し、純粋なテキストのみを連結して返します。

設定時にHTMLタグを含む文字列を代入しても、タグはそのまま文字列として表示され、HTMLとして解釈されることはありません。この性質があるため、ユーザーが入力した値を画面に表示する場合には『HTML要素.innerHTML』よりも『HTML要素.textContent』の方が安全です。

HTMLを含む内容を動的に挿入したい場合は『HTML要素.innerHTML』を使用してください。

対応ブラウザ

Chrome Chrome
49 以降
Firefox Firefox
57 以降
Safari Safari
18 以降
2 以前 ×
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
8 以前 ×
Opera Opera
48 以降
8 以前 ×
iOS Safari iOS Safari
18 以降
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。