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

Posted

技术标签:

【中文标题】如何在 innerText 或 nodeValue 之间进行选择?【英文标题】:How do I choose between innerText or nodeValue? 【发布时间】:2010-12-18 02:57:30 【问题描述】:

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

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

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

【问题讨论】:

这能回答你的问题吗? innerText vs innerhtml vs label vs text vs textContent vs outerText 【参考方案1】:

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

来自this article:

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

【讨论】:

【参考方案2】: nodeValue 是 W3C 的标准推荐。 innerTextInternet Explorer 特定的,而不是标准。和: 不返回<script><style> 的内容。 样式感知,不返回隐藏元素的文本。 CSS 样式感知,它会触发重排。

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

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

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

【讨论】:

以上是关于如何在 innerText 或 nodeValue 之间进行选择?的主要内容,如果未能解决你的问题,请参考以下文章

javascript,innerHTML或者innerText获取的内容是否字符串?为啥和另外一个字符串相比结果不对

如何使用 Chome 和/或 Firefox 上的检查窗口找到网页元素的 innerText 和 outerHTML?

揭秘DOM中data和nodeValue属性同步改变那些事

如何在 $node 中获取 html 而不仅仅是 $nodeValue [重复]

innerText跟innerHtml的区别

在 PHP 中,如何使用 querySelector 方法访问 dom 并打印出它的 nodeValue 或值?