Node: textContent 属性
Node 接口的 textContent 属性表示该节点及其后代节点的文本内容。
注意:textContent 和 HTMLElement.innerText 很容易混淆,但这两个属性有 重要的区别。
值
一个字符串,或者 null。其值取决于具体情况。
-
如果该节点是
document或 doctype,则textContent返回null。注意:要获取整个文档的所有文本和 CDATA 数据,请使用
document.documentElement.textContent。 -
如果该节点是 CDATA 部分、注释、处理指令或文本节点,则
textContent返回或设置节点内的文本,即Node.nodeValue。 -
对于其他节点类型,
textContent返回所有子节点的textContent的串联,但不包括注释和处理指令。(如果节点没有子节点,则为空字符串。)
警告:在节点上设置 textContent 会移除该节点所有的子节点,并用一个具有给定字符串值的文本节点替换它们。
与 innerText 的区别
不要混淆 Node.textContent 和 HTMLElement.innerText 之间的区别。尽管名称相似,但它们之间存在重要的差异。
与 innerHTML 的区别
Element.innerHTML 如其名称所示,用于获取或设置 HTML。我们不建议使用 innerHTML 来获取或设置元素内的文本,因为它处理的是原始 HTML 而不是纯文本,并且可能容易受到 XSS 攻击。即使您确定文本不包含 HTML 语法,它仍然不够语义化且速度较慢,因为它需要调用 HTML 解析器。
示例
从这个 HTML 片段开始。
html
<div id="divA">This is <span>some</span> text!</div>
您可以使用 textContent 来获取元素的文本内容。
js
let text = document.getElementById("divA").textContent;
// The text variable is now: 'This is some text!'
如果您想设置元素的文本内容,可以这样做:
js
document.getElementById("divA").textContent = "This text is different!";
// The HTML for divA is now:
// <div id="divA">This text is different!</div>
规范
| 规范 |
|---|
| DOM # dom-node-textcontent |
浏览器兼容性
加载中…