23

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

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

或者

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

2 回答 2

17

对于具有文本内容的元素,它们是相同的。有关. _ _nodeValue

这篇文章

如果元素没有子元素,只有文本,那么它(通常)有一个子节点,访问为ElemRef.childNodes[0]. 在这种精确的情况下,W3C 网络标准等效ElemRef.innerTextElemRef.childNodes[0].nodeValue.

于 2009-11-19T00:32:49.877 回答
4
  • nodeValue是 W3C 的标准推荐。
  • innerTextInternet Explorer特定的,而不是标准。和:
    • 不返回<script>and的内容<style>
    • 样式意识,不返回隐藏元素的文本。
    • CSS样式意识,它会触发重排。

但是,截至 2016 年 3 月,所有主要浏览器的版本都支持 innerText。

一般来说,它们是相似的,但如果你需要最好的性能,应该使用nodeValue 。

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

于 2015-09-02T01:42:19.483 回答