2012-04-29 7 views

答えて

108

innerHTMLの代わりにtextContentを試してみるといいでしょう。

innerHTMLStringとしてDOMコンテンツを返しますが、divの「テキスト」は排他的ではありません。 divにはテキストのみが含まれていますが、すべてのユースケースに適していないことがわかっていれば問題ありません。

var node = document.getElementById('test'), 

htmlContent = node.innerHTML, 
// htmlContent = "Some <span class="foo">sample</span> text." 

textContent = node.textContent; 
// textContent = "Some sample text." 

を参照してください:あなたは次のような結果を得るでしょう

<div id="test"> 
    Some <span class="foo">sample</span> text. 
</div> 

:これらのケースでは、おそらく次のマークアップを考えると、例えば、代わりにinnerHTML

textContentを使用する必要があります詳細については、MDN:

+0

'.textContent'はIE8以下ではサポートされていないため、やや使いにくいです。 – Blender

+2

真。 Indepth、 'innerHTML'は、質問で要求されたテキストコンテンツのみを返します。私は '.textContent'機能検出に基づく解決策を実装したいと思っています。 dhar

+3

のフォールバックを使用しています。古い質問ですが、_.textContent_は今日の世界にとってより適切な答えです。 – Donovan

1

textContentはIE8でサポートし、古いされていないため、ここでの回避策です:

var node = document.getElementById('test'), 
var text = node.textContent || node.innerText; 
alert(text); 

innerTextはIEでの作業を行います。

関連する問題