innertext只读取渲染后可见文本,跳过隐藏内容并压缩空白、触发重排;textcontent读取所有文本节点内容,保留原始空白、不触发重排,性能更优且为标准推荐。

关键区别在于:innerText 只读取浏览器渲染后“真正可见”的文本,而 textContent 无视样式,照单全收所有文本节点内容。
innerText 会跳过隐藏内容
当元素设置了 display: none、visibility: hidden 或被父级隐藏时,innerText 完全忽略其内部文本。它模拟用户肉眼所见——看不见的,就不算数。
- 比如
<div> <p style="display:none">秘密</p>公开</div>,innerText 返回 "公开" - 还会自动压缩连续空白(包括换行、制表符),把多空格变成单空格,段落间不保留换行
- 触发重排(reflow),性能开销略大
textContent 不管你藏没藏
textContent 看的是 DOM 树结构本身,不是渲染结果。只要文本节点在 HTML 中存在,哪怕被 CSS 隐藏、注释包裹、或在 <script></script> 里,它都一并提取。
- 同样那段 HTML,textContent 返回 "\n秘密\n公开\n"(含换行和隐藏文本)
- 保留原始空白符,不压缩、不换行处理,忠实反映源码结构
- 不触发重排,性能更优,是标准推荐做法
什么时候该用哪个?
想做数据提取、SEO 内容分析、表单校验或调试 DOM 结构?选 textContent —— 它稳定、标准、不含糊。
想模拟用户复制粘贴行为、做可访问性检查、或只关心屏幕上实际显示的文字?用 innerText —— 它贴近视觉表现,但要注意兼容性和性能代价。
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











