https://developer.mozilla.org/en-US/docs/Web/API/Node/textContentNode.textContent
属性可以表示一个节点及其后代节点的文本内容。
语法
var 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 引入了 element.innerText
,目的是相似的,不过有下面几点不同之处:
textContent
会获取所有元素的内容,包括<script>
和<style>
元素,然而 IE 专有属性innerText
不会。innerText
会受样式的影响,它不返回隐藏元素的文本,但textContent
返回。- 由于
innerText
受 CSS 样式的影响,它会触发重排(reflow),但textContent
不会。
与innerHTML的区别
正如它的名字,innerHTML
返回
HTML
文本。很多时候,当需要往一个元素里面写文本的时候,人们使用
innerHTML,但其实应该使用
textContent,因为文本不会被解析为 HTML,所以它很可能在性能表现上会更好,同时还能够避免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>