news 2026/2/26 20:01:57

JavaScript DOM 原生部分(二):元素内容修改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript DOM 原生部分(二):元素内容修改

文章目录

  • 一.修改纯文本内容( textContent / innerText )
    • 1.textContent(推荐)
    • 2.innerText
  • 二.修改 HTML 内容( innerHTML )
  • 三.修改表单元素的值( value )
  • 四.替换元素本身( outerHTML )
  • 关键注意事项
  • 总结

在 JavaScript 中,修改 DOM 元素的内容是常见操作,主要分为修改文本内容修改 HTML 内容修改表单元素的值三类,以下是详细的实现方式:

一.修改纯文本内容( textContent / innerText )

这两个属性用于操作元素的文本内容,区别在于处理空白和隐藏元素的方式不同.

1.textContent(推荐)

  • 作用: 获取/设置元素的所有文本内容(包括子元素的文本,忽略 HTML 标签,保留空格和换行).
  • 特点: 性能更好,支持所有现代浏览器,会将 HTML 标签作为普通文本处理(避免 XSS 攻击).
// HTML: <div id="box">Hello <span>World</span></div>constbox=document.getElementById('box');// 获取文本内容: "Hello World"console.log(box.textContent);// 设置文本内容(覆盖原有内容)box.textContent='你好,JavaScript';// 结果: <div id="box">你好,JavaScript</div>// 也可追加文本(拼接原有内容)box.textContent+='!';// 结果: <div id="box">你好,JavaScript!</div>

2.innerText

  • 作用: 获取 / 设置元素的可见文本内容(受 CSS 样式影响,如隐藏元素的文本不会被获取,且会合并空白).
  • 特点: 兼容性好,但性能略低于textContent.
// HTML: <div id="box">Hello <span style="display: none;">隐藏文本</span> World</div>constbox=document.getElementById('box');// 获取可见文本: "Hello World"(忽略隐藏文本和多余空格)console.log(box.innerText);// 设置文本内容box.innerText='Hello DOM';// 结果: <div id="box">Hello DOM</div>

二.修改 HTML 内容( innerHTML )

  • 作用: 获取/设置元素的HTML 内容(包括标签),可直接插入 HTML 结构.
  • 注意: 使用innerHTML时需注意XSS 攻击风险(避免插入用户输入的未过滤内容).
// HTML: <div id="box">初始内容</div>constbox=document.getElementById('box');// 获取 HTML 内容: "初始内容"console.log(box.innerHTML);// 设置 HTML 内容(覆盖原有内容)box.innerHTML='<h3>标题</h3><p>这是一段带标签的内容</p>';// 结果: <div id="box"><h3>标题</h3><p>这是一段带标签的内容</p></div>// 追加 HTML 内容(拼接原有内容)box.innerHTML+='<span>追加的内容</span>';

三.修改表单元素的值( value )

对于<input><textarea><select>等表单元素,使用value属性修改其值.

// 1. 单行输入框// HTML: <input type="text" id="username" value="初始值">constusername=document.getElementById('username');username.value='张三';// 设置值为"张三"// 2. 密码框// HTML: <input type="password" id="pwd">constpwd=document.getElementById('pwd');pwd.value='123456';// 3. 文本域// HTML: <textarea id="content">初始文本</textarea>constcontent=document.getElementById('content');content.value='这是文本域的新内容';// 4. 下拉选择框// HTML:// <select id="city">// <option value="beijing">北京</option>// <option value="shanghai">上海</option>// </select>constcity=document.getElementById('city');city.value='shanghai';// 选中"上海"选项

四.替换元素本身( outerHTML )

  • 作用: 获取/设置元素及其所有内容的 HTML 结构(包括元素自身标签).
  • 注意: 设置后原元素会被新的 HTML 结构替换.
// HTML: <div id="box">旧内容</div>constbox=document.getElementById('box');// 获取 outerHTML: "<div id="box">旧内容</div>"console.log(box.outerHTML);// 替换元素本身box.outerHTML='<p id="newBox">新的p元素</p>';// 结果: <p id="newBox">新的p元素</p>(原div被替换)

关键注意事项

  1. XSS 安全问题

    • 若内容包含用户输入,优先使用textContent/text()(会转义 HTML 标签),避免使用innerHTML/html()导致 XSS 攻击.
    • 示例: 用户输入<script>alert('攻击')</script>,textContent会将其作为普通文本显示,而innerHTML会执行脚本.
  2. 性能考量

    • 频繁修改innerHTML会导致浏览器反复解析 DOM,性能较低(可先拼接字符串再一次性设置).
    • 对于大量文本修改,textContentinnerText更快.
  3. 元素存在性检查

    • 修改内容前建议检查元素是否存在,避免报错:
      constbox=document.getElementById('box');if(box){// 检查元素是否存在box.textContent='新内容';}
  4. 表单元素的特殊情况

    • 对于<input type="file">,value属性只读,无法通过 JavaScript 修改(出于安全考虑).

总结

场景推荐方法
修改纯文本内容textContent
修改带标签的 HTML 内容innerHTML( 谨慎使用 )
修改表单元素值value
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 15:25:01

风能太阳能供电的路灯智能控制系统(论文+源码)

本课题为风能太阳能供电的路灯智能控制系统设计&#xff0c;系统的主要功能设计如下&#xff1a;&#xff08;1&#xff09; 供电模块&#xff1a;采用太阳能板以及风机模拟风扇充电&#xff0c;经过充电电路给锂电池进行充电。再由锂电池给照明模块以及整个项目提供电源。由太…

作者头像 李华
网站建设 2026/2/25 17:20:17

没有测试用例,怎么才能确保测试全面?

测试用例的编写是测试过程中很重要的一环节&#xff0c;但当任务急时间紧&#xff0c;会没时间编写测试用例。没有测试用例&#xff0c;测试全面性可能会受到限制。然而&#xff0c;仍然可以采取一些方法来尽可能地测试系统的各个方面。 以下是一些建议方法以确保测试全面性&a…

作者头像 李华
网站建设 2026/2/25 22:29:12

Jmeter分布式测试必踩坑,全部帮你排雷

在jmeter分布式环境部署上&#xff0c;有很同学都遇到了不少问题&#xff0c;就算是看过安装教程&#xff0c;也会在实际操作的时候一脸懵&#xff0c;经常的状态是就是&#xff1a;眼睛会了手不会。 所以我们把大家容易出问题的地方总结出来&#xff0c;一起来看看吧&#xf…

作者头像 李华
网站建设 2026/2/25 0:33:31

13.常见的异常类有哪些?

常见的异常类有哪些&#xff1f;NullPointerException&#xff1a;空指针异常&#xff1b;SQLException&#xff1a;数据库相关的异常&#xff1b;IndexOutOfBoundsException&#xff1a;数组下角标越界异常&#xff1b;FileNotFoundException&#xff1a;打开文件失败时抛出&a…

作者头像 李华
网站建设 2026/2/26 8:28:17

【Q#量子编程效率革命】:揭秘VSCode重构工具的5大核心技巧

第一章&#xff1a;Q#量子编程效率革命的背景与意义量子计算正从理论探索迈向实际应用&#xff0c;而传统编程语言在表达量子态叠加、纠缠和测量等特性时显得力不从心。微软推出的Q#语言专为量子算法设计&#xff0c;填补了高层抽象与底层硬件之间的鸿沟&#xff0c;显著提升了…

作者头像 李华