HTML元素的textContent和innerText两个属性的差别

差别一:隐藏元素是否返回

textContent 和 innerText 的核心差别在于:前者返回的是"原始文本内容",后者返回的是"渲染后可见的文本"。

html 复制代码
 <!DOCTYPE html>
 <html>
 <body>
  <div id="demo">
  第一行
  <span style="display:none">隐藏内容</span>
  <span style="visibility:hidden">不可见</span>
  第二行
</div>
<script>
const el = document.getElementById('demo');

console.log(el.textContent);
// 输出(保留换行和缩进):
// "\n    第一行\n  隐藏内容\n  不可见\n  第二行\n"

console.log(el.innerText);
// 输出(只保留可见文本,并规范化空白):
// " 第一行 第二行"
</script>
</body>
</html>

差别二:是否对空白进行规范化处理

innerText 会对空白进行规范化(多个空格/换行合并为一个空格),textContent 则原样保留。

差别三:执行效率

innerText 的返回值依赖于元素的渲染状态。为了知道哪些内容"可见"、空白该如何规范化,浏览器可能需要重新计算布局(reflow),所以它读取效率较低,不适合在循环或高频操作中使用。

textContent 只是拼接 DOM 树里的文本节点,不关心 CSS,读起来快得多。

差别四:对元素内部定义的CSS样式结点与脚本结点的处理不同

textContent 会把元素内部定义的 <script> 和 <style> 里的文本也读出来,innerText 不会。

html 复制代码
 <!DOCTYPE html>
 <html>
 <body>
  <div id="demo">
  可见文字
  <script>console.log('hi')</script>
  <style>.a{color:red}</style>
</div>
<script>
const el = document.getElementById('demo');

console.log(el.textContent);
// 输出(保留换行和缩进):
// "\n  可见文字\n  console.log('hi')\n  .a{color:red}\n"

console.log(el.innerText);
// 输出(只保留可见文本,并规范化空白):
// " 可见文字"
</script>
</body>
</html>

差别五:写入行为不同

javascript 复制代码
el.textContent = 'a\nb';   // 换行会被当作纯文本,显示为 "a b"(HTML 里换行不生效)
el.innerText = 'a\nb';     // 换行会被转换成 <br>,真正显示为两行

小结

维度 textContent innerText
定义来源 DOM 标准 HTML 标准(更偏渲染)
隐藏元素内容 包含 不包含
空白处理 原样保留 规范化(类似浏览器显示效果)
<br> 换行 不体现 体现为换行
性能 快(不触发重排) 慢(可能触发重排/回流)
对 script/style 返回其文本 不返回
相关推荐
风骏时光牛马7 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
wangruofeng8 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构
清晨Coding9 小时前
为什么用 React Developer Tools 查看组件树这么乱?
前端·react.js
鶴哥只手遮天9 小时前
《Electron 45.2.3 内核解剖》第 4 章 补丁体系:380 个补丁改了什么
前端·electron
FungLeo11 小时前
成为全栈·Vue 管理后台篇·分类树与标签管理:层级数据如何落到管理界面
前端·javascript·vue.js·分类树·naive ui·标签管理·前端数据结构
Lank_M15 小时前
白底都占八成,PNG 为何只在图表页赢过 JPG
前端
张一凡9315 小时前
给 Coding Agent 加一道"架构闸门":Jin 是如何做到"先审架构、再写代码、不漂移"的
前端·后端·agent
Linye15 小时前
AI 写的 HTML 原型全是空壳?聊聊真实 DOM 交互避坑
前端·人工智能
ZANE15 小时前
纯前端实现的 PDF 与图片互相转换工具技术实现
前端
Swot15 小时前
SvelteKit Remote Functions 使用指南
前端·后端