LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

DOM 操作文本节点:innerHTML、innerText、textContent 一文吃透!

admin
2026年3月7日 8:4 本文热度 19

你是不是在写前端代码时,经常被innerHTML、innerText、textContent这三个属性搞晕? 同样是操作网页文本,为啥有的能解析HTML标签,有的只会纯文本展示?用错了还会出bug、有安全风险?

先搞懂核心:我们操作的是「文本节点」

在网页里,所有文字内容都属于文本节点,就是HTML标签包裹的内容:

<!-- "前端小课堂" 就是文本节点 -->
<div>前端小课堂</div>
<!-- "百度一下" 就是文本节点 -->
<href="#">百度一下</a>

JS想要修改、读取这些文字,就靠今天的三个主角,还有两个冷门配角,我们一次性讲清楚!

一、三大核心属性详解 案例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>文本节点操作详解</title>
<style>
.box { border1px solid #cccpadding10pxmargin10px 0; }
</style>
</head>
<body>
<h3>原始内容</h3>
<div class="box" id="demo">
    我是原始文本
<span style="color:red">
    我是红色span标签
</span>
</div>

<button onclick="testInnerHTML()">测试innerHTML</button>
<button onclick="testInnerText()">测试innerText</button>
<button onclick="testTextContent()">测试textContent</button>

<script>
// 获取元素
const box = document.getElementById('demo');

// 1. 测试 innerHTML:【能解析HTML标签】
function testInnerHTML() {
    // 读取:会返回 【文本 + 完整HTML结构】
    console.log('innerHTML读取:', box.innerHTML);

    // 设置:会把字符串当HTML解析,生成标签
    box.innerHTML = '<h2 style="color:blue">我是innerHTML设置的蓝色标题</h2>';
}

// 2. 测试 innerText:【纯文本,只显示"人能看见"的内容】
function testInnerText() {
    // 读取:只返回页面渲染的纯文本,忽略HTML标签
    console.log('innerText读取:', box.innerText);

    // 设置:HTML标签会被当作文本直接显示,不会解析
    box.innerText = '<h2>我是innerText,标签不会生效</h2>';
}

// 3. 测试 textContent:【标准纯文本,获取所有文本内容】
function testTextContent() {
    // 读取:获取元素内所有文本(包括隐藏文字),无HTML
    console.log('textContent读取:', box.textContent);

    // 设置:和innerText一样,纯文本展示,不解析标签
    box.textContent = '<h2>我是textContent,标准纯文本</h2>';
}
</script>
</body>
</html>

1. innerHTML —— 最常用的「HTML解析神器」

核心特点

  • 读取:返回文本+HTML标签结构
  • 设置:自动解析HTML标签,直接渲染成DOM元素。
  • 优势:代码简洁,渲染复杂结构比手动创建节点快10倍。
  • 缺点:有XSS安全风险(不要直接渲染用户输入的内容)。

一句话总结:想插入带样式、带标签的内容,用它!


2. innerText —— 「只认人眼可见的纯文本」

核心特点

  • 不解析HTML,标签会原样输出。
  • 只获取页面渲染出来的可见文本
  • 会自动忽略隐藏元素、CSS隐藏的文字。
  • IE浏览器兼容性极好。

一句话总结:只想插入纯文字,不想让标签生效,用它!


3. textContent —— 「标准通用纯文本」

核心特点

  • 不解析HTML。
  • W3C标准方法
    (推荐现代项目使用)。
  • 获取元素内所有文本(包括隐藏文字)。
  • 性能比innerText更好。

一句话总结:现代前端开发,纯文本操作优先用它!


二、一张表看懂三者核心区别

属性
能否解析HTML
获取范围
标准性
适用场景
innerHTML
文本+HTML标签
非标准
插入带标签的DOM结构
innerText
不能
仅可见文本
非标准
兼容IE,纯可见文本
textContent
不能
所有文本(含隐藏)
标准
现代浏览器,纯文本操作

三、两个冷门属性:outerHTML / outerText

日常开发用得极少,但你必须知道区别:

  1. outerHTML
    :和innerHTML功能一样,但会替换自身标签
    // 原本是div,执行后直接变成p标签
    box.outerHTML = '<p>我替换了整个div</p>';
  2. outerText
    :和innerText一样,但直接覆盖整个元素

小贴士:不到万不得已,不推荐使用,容易破坏DOM结构!


四、新手必看:3个实用避坑指南

  1. 安全问题
    :innerHTML千万别直接渲染用户输入的内容,容易引发XSS攻击。
  2. 性能问题
    :频繁修改innerHTML会重复渲染DOM,建议拼接完再一次性赋值。
  3. 标准问题
    :现代Vue/React/原生项目,纯文本优先用textContent

总结

  1. 插入HTML标签、渲染样式 → 用 innerHTML
  2. 纯文本、只显示可见内容、兼容IE → 用 innerText
  3. 标准纯文本、获取所有内容、现代开发 → 用 textContent

这三个属性是前端操作DOM文本的基础,吃透它们,写网页文本修改逻辑再也不会晕啦~


阅读原文:原文链接


该文章在 2026/3/9 9:40:22 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved