textContent、innerText与innerHTML的区别
textContent、innerText 与 innerHTML 三个接口,在我们想要获取或改变一个 DOM 的内容时,经常会用到,有时候会搞混其中的用法,在此做个记录。
示例
没有什么比直接运行一段代码的效果更加直接了
1 |
|

从结果里我们可以清晰的看出 textContent、innerText 和 innerHTML 的区别。
- textContent 会获取除标签外的所有内容
- innerText 会受到 css 的影响,仅会获取实际可以看到的内容,隐藏内容会被忽略
- innerHTML 会获取所有内容,包括标签
总结差异
-
行为区别
textContent和innerText获取的是元素内容;innerHTML获取的是元素的 html 文本textContent会获取所有元素的内容,包括script和style元素;innerText不会innerText会受到 css 影响,不会返回隐藏内容;textContent不会- 使用
innerHTML设置内容,会将内容解析为 html,所以性能相对较差,还可能存在 XSS 攻击;而因为文本不会被解析,则textContent和innerText不会有这个问题,性能更好。 - 因为
innerText受样式影响,会触发重排,而textContent不会。
-
归属区别
textContent是Node对象的属性innerText是Element对象的属性innerHTML是HTMLElement对象的属性