首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >nodeValue vs innerHTML和textContent。如何选择?

nodeValue vs innerHTML和textContent。如何选择?
EN

Stack Overflow用户
提问于 2014-01-23 22:41:38
回答 2查看 85.8K关注 0票数 143

我使用普通的js来更改label元素的内部文本,但我不确定应该使用innerHTML、nodeValue还是textContent。我不需要创建新的节点,也不需要更改HTML元素或任何- just来替换文本。以下是代码的一个示例:

代码语言:javascript
复制
var myLabel = document.getElementById("#someLabel");
myLabel.innerHTML = "Some new label text!"; // this works

myLabel.firstChild.nodeValue = "Some new label text!"; // this also works.

myLabel.textContent = "Some new label text!"; // this also works.

我查看了jQuery源代码,它只使用了nodeValue一次,但使用了innerHTML和textContent几次。然后我发现了这个jsperf测试,它表明firstChild.nodeValue的速度要快得多。至少我是这么理解的。

如果firstChild.nodeValue的速度要快得多,有什么问题吗?它不是得到了广泛的支持吗?还有其他问题吗?

EN

回答 2

Stack Overflow用户

发布于 2014-09-18 01:33:00

.textContent输出text/plain,而.innerHTML输出text/html

快速示例:

var example = document.getElementById('exampleId');

example.textContent = '<a href="https://google.com">google</a>';

输出: google

example.innerHTML = '<a href="https://google.com">google</a>';

输出:google

您可以从第一个示例中看到,浏览器不会解析text/plain类型的输出,因此会显示完整的内容。text/html类型的输出告诉浏览器在显示它之前对其进行解析。

MDN innerHTMLMDN textContentMDN nodeValue

票数 61
EN

Stack Overflow用户

发布于 2019-02-28 21:08:44

注意:这篇文章更多的是关于分享可能对某人有帮助的特定数据,而不是告诉人们该做什么

如果有人想知道现在最快的是什么:https://jsperf.com/set-innertext-vs-innerhtml-vs-textcontent & https://jsperf.com/get-innertext-vs-innerhtml-vs-textcontent (对于第二个测试,跨度的内容是纯文本,结果可能会根据它的内容而变化)

就纯速度而言,.innerHtml似乎是最大的赢家!

(注意:我在这里只讨论速度,在选择使用哪个标准之前,您可能想要寻找其他标准!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21311299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档