innertext返回渲染后可见文本,受css影响且忽略隐藏内容;textcontent返回dom中所有原始文本,保留空格换行,兼容性更好且更安全。

获取和设置 innerText 与 textContent 都是通过元素对象的属性直接读写,语法一样,但行为差异明显——关键看你要的是“浏览器渲染后看到的文本”,还是“DOM树里实际存在的所有文本”。
innerText:只取“可见”的、格式化后的文本
innerText 是非标准属性(起源于 IE),它会受 CSS 样式影响,只返回用户在页面上实际能看到的文本内容:
- 自动折叠连续空白符(多个空格、换行、制表符 → 单个空格)
- 跳过
display: none、visibility: hidden元素中的文本 - 不包含
<script></script>、<style></style>等不可见节点的内容 - 换行可能被转为空格,段落结构会被“扁平化”
示例:<div>
<strong style="display:none">隐藏</strong>Hello<br>World</div>
→ element.innerText 返回 "Hello World"(隐藏内容不出现,换行变空格)
textContent:取 DOM 中所有纯文本节点的原始拼接
textContent 是 W3C 标准属性,更底层、更可靠:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 返回所有子节点中的文本内容,包括
display: none和注释节点里的文本(但不包括标签名) - 保留原始换行和空格(不折叠),不做样式判断
- 设置时会自动转义 HTML 字符,比如
el.textContent = "<strong>Hi</strong>"会原样显示为文字,不会解析成加粗效果 - 性能略高,且无 XSS 风险,适合处理用户输入或日志类文本
同上例:
→ element.textContent 返回 "Hello\nWorld"(含换行符,隐藏内容也计入)
怎么获取和设置?语法完全一致
两者都用点号访问属性,支持读取和赋值:
- 获取:
const text = element.innerText;或const text = element.textContent; - 设置:
element.innerText = "新文本";或element.textContent = "新文本";
注意:innerText 在某些旧版 Safari 或 iframe 场景下可能返回空字符串;textContent 兼容性更好(IE9+),推荐优先使用,除非你明确需要样式感知的文本表现。
别和 innerHTML 混了
innerHTML 处理的是 HTML 字符串,会解析标签;innerText 和 textContent 都只处理纯文本。如果误用 innerText 设置带标签的字符串,标签会被当作普通字符显示;而用 innerHTML 设置纯文本则可能引入 XSS 风险。该用哪个,取决于你要的是“内容安全的文本”还是“带格式的 HTML”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










