我使用普通的js来更改label元素的内部文本,但我不确定应该使用innerHTML、nodeValue还是textContent。我不需要创建新的节点,也不需要更改HTML元素或任何- just来替换文本。以下是代码的一个示例:
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的速度要快得多,有什么问题吗?它不是得到了广泛的支持吗?还有其他问题吗?
发布于 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
类型的输出告诉浏览器在显示它之前对其进行解析。
发布于 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
似乎是最大的赢家!
(注意:我在这里只讨论速度,在选择使用哪个标准之前,您可能想要寻找其他标准!)
https://stackoverflow.com/questions/21311299
复制相似问题