2009-11-19 54 views
15

当我需要改变一个span元素中的文字,我应该使用哪一个和的区别是什么:如何在innerText或nodeValue之间进行选择?

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

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

回答

12

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

this article

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

2
  • 的nodeValue是推荐标准W3C。
  • innerTextInternet Explorer具体而非标准。并且:
    • 不返回<script><style>的内容。
    • 风格意识,不会返回隐藏元素的文本。
    • CSS样式意识,它会触发回流。

在一般情况下,它们是相似的,但如果你需要最好的性能,的nodeValue应该被使用。

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

相关问题