概要
そのノードおよびすべての子孫の全テキスト内容を取得したり設定したりします。
構文
var text = element.textContent; element.textContent = "this is some sample text";
説明
- その要素がdocumentか、DocumentTypeオブジェクトか、notationのときは、textContentはnullを返します。文書全体のテキストとCDATAデータを取得したいときには以下のように書けます:
document.documentElement.textContent
- ノードがCDATAセクションか、コメントノードか、処理命令ノードか、テキストノードのときは、
textContent
はノードの内側のテキスト(つまり nodeValue)を返します。 - nodeTypeがこれら以外のときは、
textContent
はコメントノードと処理命令ノードを除くすべての子ノードのtextContent
属性値を連結したものを返します。ノードが子を持たないとき、これは空文字列になります。 - ノードのこのプロパティに値をセットすると、ノードのすべての子供が取り除かれて、その値の単一のテキストノードに置き換わります。
innerTextとの違い
Internet Explorerはelement.innerText
を導入しました。これはtextContentと大体同じようなものですが、いくつかの違いがあります:
textContentは
<script>
と<style>
を含むすべての要素の内容を取得することに気をつけてください。 ほとんどIE特有のプロパティであるinnerText
はそうではありません。innerText
は要素のスタイルに対して知覚的で、隠された要素のテキストを返さないでしょう。一方textContentは返すでしょう。innerText
はCSSスタイリングに対して知覚的なので、描画の再計算を引き起こすでしょう。一方textContent
はそうではないでしょう。
innerHTMLとの違い
innerHTML
はその名が示すとおりHTMLの断片を返します。要素の中のテキストを読み書きするためにinnerHTML
を使用する場面はかなり頻繁に見受けられます。代わりにtextContent
を使うべきでしょう。なぜならテキストの処理がなされないためにおそらくはより良いパフォーマンスが得られるからです。さらに、textContent
はXSSを利用したアクセス攻撃を回避します。
例
// 以下のようなHTMLの断片があります: // <div id="divA">This is <span>some</span> text</div> // テキスト内容を取得する: var text = document.getElementById("divA").textContent; // 変数text には "This is some text" が入ります。 // テキスト内容を設定する: document.getElementById("divA").textContent = "This is some text"; // HTMLのdivAはこのようになります: // <div id="divA">This is some text</div>
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | 1+ | (有) | 9 | (有) | (有) |
機能 | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
基本サポート | ? | ? | ? | ? |
?
|