innerHTML赋值可直接解析渲染HTML字符串,但需确保结构合法、防范XSS攻击、避免操作时机错误,并优先考虑textContent或DocumentFragment提升安全与性能。

直接用 innerHTML 赋值就能动态解析并渲染 HTML 字符串,浏览器会自动把字符串转成 DOM 节点并插入。但要注意结构合法性、安全性和操作时机,否则容易出错或被篡改。
基本写法:赋值即解析
只要目标元素存在,给它的 innerHTML 属性赋一个含 HTML 标签的字符串,浏览器立刻解析并渲染:
-
获取元素:比如
const box = document.getElementById('content'); -
赋值字符串:比如
box.innerHTML = '你好
- 列表项
- 结果:页面上显示为一个段落加一个无序列表,不是纯文本
表格等复杂结构要守规范
如果字符串里含 用 innerHTML 插入后,新节点已存在于 DOM 中,但若立即用 innerHTML 解析的是任意 HTML,不加过滤可能执行恶意脚本,频繁操作也影响性能:,必须符合 HTML 嵌套规则,否则浏览器会“纠错”导致内容移位:
里面只能放
或
,不能直接塞
box.innerHTML = ' → 浏览器会把 '; 移出表格
,每个
内只用单元格标签;不确定时可先用开发者工具检查最终 DOM 结构
想操作新生成的元素?别急着查
querySelector 查找,可能因执行太快而找不到:
box.querySelector('.new-btn')
DOMParser 先解析字符串为真实 DOM 节点,再修改属性、绑定事件,最后一次性 append 到页面const doc = new DOMParser().parseFromString(htmlStr, 'text/html'); const node = doc.body.firstChild; node.querySelector('button').onclick = handler; box.appendChild(node);
安全和性能要注意
替成
)textContent 更安全、更快,不会解析标签DocumentFragment 拼好再插入,减少重排重绘
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











