什么元素有此属性
innerText 是 Element 的属性
textContent 是 Node 的属性 (比如纯文本节点有textContent,而没有innerText)
返回的内容
- innerText
innerText会返回节点中的每一个可见的元素,可见是指其在浏览器中的可见性(当display为none,或者标签为style,script时都不能显示)。内容的排版则是按照HTML元素的排版,根据元素显示的格式来确定空格和换行符。 - textContent
textContent 会返回节点中的每一个元素而不考虑其可见性。同时其内容的排版就相当于代码中的排版去除标签内容,缩进换行都能保留。
一个简单的示例如下:
<div>
text
<span>visible</span>
<span style="display: none;">invisible</span>
<script>
const a = 1;
</script>
</div>
el.innerText;
// "text visible"
el.textContent;
/*
"
text
visible
invisible
const a = 1;
"
*/
性能方面
因为 innerText 只返回可见的元素,因此受到CSS样式的影响,同时其返回字符串的格式(如空格分隔和换行符)也遵循布局的格式。因此可能会触发浏览器的回流重排来确保是最新的计算样式,造成相对较大的性能损耗。
在通常情况下,textContent 要比 innerText 快几十倍。
兼容性
都能全部兼容。(IE8不兼容textContent)