nodeValue与innerHTML和textContent。 如何select?
我使用普通的js来改变标签元素的内部文本,我不确定我应该使用innerHTML还是nodeValue或textContent。 我不需要创build新节点或更改HTML元素或任何东西 – 只需replace文本。 这是一个代码示例:
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几次。 然后我发现这个jsperftesting,指示firstChild.nodeValue显着更快。 至less这就是我所理解的意思。
如果firstChild.nodeValue更快,那有什么用呢? 这是不是广泛支持? 还有其他的问题吗?
MDN上的textContent / innerText / innerHTML之间的区别。
关于innerText / nodeValue的Stackoverflow答案。
概要
- nodeValue使用起来有点混乱,但比innerHTML快。
- innerHTML将内容parsing为HTML并需要更长的时间。
- textContent使用直接文本,不parsingHTML,速度更快。
- innerText考虑到风格。 它不会得到隐藏的文字。
根据caniuse, FireFox 45之前,firefox中并没有存在innerText
,但是现在在所有主stream浏览器中都支持它。
.textContent
输出text/plain
而.innerHTML
输出text/html
。
快速示例:
var example = document.getElementById('exampleId')
example.textContent='<a href="https://google.com">google</a>'
输出:<a href =“http://google.com”> google </ a>(不含空格)
example.innerHTML='<a href="https://google.com">google</a>'
输出: 谷歌
您可以从第一个示例中看到, text/plain
types的输出未被浏览器parsing,并导致显示完整的内容。 typestext/html
输出告诉浏览器在显示之前parsing它。
MDN innerHTML , MDN textContent , MDN nodeValue
我熟知的两个方面是innerHTML和textContent 。
我使用textContent,当我只是想改变一个段落或标题的文本,如:
var heading = document.getElementById('heading') var paragraph = document.getElementById('paragraph') setTimeout(function () { heading.textContent = 'My New Title!' paragraph.textContent = 'My second <em>six word</em> story.' }, 2000)
em { font-style: italic; }
<h1 id="heading">My Title</h1> <p id="paragraph">My six word story right here.</p>