**
textContent使用详解
**
Node.textContent 属性表示一个节点及其后代的文本内容。
**
语法
**
let text = element.textContent;
element.textContent = “this is some sample text”;
**
描述
**
如果 element 是 Document,DocumentType 或者 Notation 类型节点,则 textContent 返回 null。如果你要获取整个文档的文本以及CDATA数据,可以使用 document.documentElement.textContent。
如果节点是个CDATA片段,注释,ProcessingInstruction节点或一个文本节点,textContent 返回节点内部的文本内容(即 nodeValue)。
对于其他节点类型,textContent 将所有子节点的 textContent 合并后返回,除了注释、ProcessingInstruction节点。如果该节点没有子节点的话,返回一个空字符串。
在节点上设置 textContent 属性的话,会删除它的所有子节点,并替换为一个具有给定值的文本节点。
与innerText的区别
Internet Explorer 引入了 node.innerText。意图类似,但有以下区别:
textContent 会获取所有元素的内容,包括 <script> 和 <style> 元素,然而 innerText 不会。
innerText 受 CSS 样式的影响,并且不会返回隐藏元素的文本,而textContent会。
由于 innerText 受 CSS 样式的影响,它会触发重排(reflow),但textContent 不会。
与 textContent 不同的是, 在 Internet Explorer (对于小于等于 IE11 的版本) 中对 innerText 进行修改, 不仅会移除当前元素的子节点,而且还会永久性地破坏所有后代文本节点(所以不可能再次将节点再次插入到任何其他元素或同一元素中)。
与innerHTML的区别
正如其名称,innerHTML 返回 HTML 文本。通常,为了在元素中检索或写入文本,人们使用innerHTML。但是,textContent通常具有更好的性能,因为文本不会被解析为HTML。此外,使用textContent可以防止 XSS 攻击。
例子
// 给定如下HTML:
// <div id="divA">This is <span>some</span> text</div>
// 获得文本内容:
var text = document.getElementById("divA").textContent;
// |text| is set to "This is some text".
// 设置文本内容:
document.getElementById("divA").textContent = "This is some text";
// divA的HTML现在是这样的:
// <div id="divA">This is some text</div>
兼容性
innerText 对IE的兼容性较好
textContent虽然作为标准方法但是只支持IE8+以上的浏览器
最新的浏览器,两个都可以使用
本文深入探讨了DOM操作中textContent与innerText属性的区别,包括它们的语法、功能特性及浏览器兼容性。textContent能获取包括<script>和<style>在内的所有元素内容,不受CSS样式影响,且在修改时不破坏文本节点,适用于现代浏览器。innerText则受样式影响,不返回隐藏元素文本,在IE中可能破坏节点。文章通过实例展示了如何使用textContent进行文本内容的获取和设置。
7181

被折叠的 条评论
为什么被折叠?



