2012-04-29 23 views

回答

108

您可能会想尝试textContent而不是innerHTML

鉴于innerHTML将返回DOM内容作为String而不仅仅是div中的“文本”。如果您知道您的div仅包含文本,但在每个用例中都不适用,那很好。对于这些情况,你可能不得不使用textContent,而不是innerHTML

例如,考虑下面的标记:

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

你会得到以下结果:

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

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

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

见MDN更多详情:

+0

“.textContent”在IE8及更低版本中不受支持,这使得它有点难以使用。 – Blender 2012-04-29 23:08:50

+2

是的。 Indead,“innerHTML”不会仅返回问题中请求的文本内容。我会实施一个基于'.textContent'功能检测的解决方案,其回退为 dhar 2012-05-02 20:56:58

+3

尽管这是一个较老的问题,但_.textContent_是当今世界更为合适的答案。 – Donovan 2014-04-07 18:55:21

1

因为textContent不支持IE8及以上,这里是一个解决办法:

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

innerText确实在IE工作。

相关问题