如何在innerText或nodeValue之间进行选择?

时间:2009-11-19 00:28:52

标签: html innertext nodevalue

当我需要更改span元素中的文本时,我应该使用哪个文本以及区别:

var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.innerText=sDetail;

 var spnDetailDisplay=document.getElementById('spnDetailDisplay');
 spnDetailDisplay.childNodes[0].nodeValue=sDetail;

2 个答案:

答案 0 :(得分:17)

对于具有文本内容的元素,它们是相同的。有关nodeValue的信息,请参阅this MDC article

来自this article

  

如果元素没有子元素,只有文本,那么它(通常)有一个子节点,访问为ElemRef.childNodes[0]。在这种精确的情况下,相当于ElemRef.innerText的W3C Web标准是ElemRef.childNodes[0].nodeValue

答案 1 :(得分:4)

  • nodeValue 是标准推荐W3C。
  • innerText Internet Explorer 特定的,而不是标准。和:
    • 不会返回<script><style>
    • 的内容
    • 样式感知,不返回隐藏元素的文本。
    • CSS样式识别,它会触发重排。

然而,截至2016年3月,所有主流浏览器的版本都支持innerText。

一般来说,它们是相似的,但如果您需要最佳性能,则应使用 nodeValue

效果测试链接:https://jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13