导读:本期聚焦于小伙伴创作的《js如何输出html?JavaScript动态输出HTML内容(innerHTML)方法详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《js如何输出html?JavaScript动态输出HTML内容(innerHTML)方法详解》有用,将其分享出去将是对创作者最好的鼓励。

在前端开发中,通过JavaScript动态输出HTML内容是常见的需求,比如根据接口返回的数据渲染列表、动态生成弹窗内容等,innerHTML是实现这一需求的核心属性之一。它是DOM元素的一个属性,用于获取或设置元素内部的HTML内容,通过修改该属性的值,就可以直接向页面中插入自定义的HTML结构。

innerHTML基本语法

innerHTML属于DOM元素的属性,使用方式非常简单,主要分为获取内容和设置内容两种场景。

获取元素内部HTML内容

通过读取元素的innerHTML属性,可以得到该元素内部所有的HTML字符串,包括标签和文本内容。

// 获取id为container的元素内部HTML内容
const container = document.getElementById('container');
const innerHTMLStr = container.innerHTML;
console.log(innerHTMLStr);

设置元素内部HTML内容

给innerHTML属性赋值一个HTML字符串,浏览器会自动解析该字符串并渲染对应的HTML结构,替换掉元素原本的内容。

// 向id为container的元素中动态输出HTML内容
const container = document.getElementById('container');
// 赋值后元素内部会渲染出一个h2标题和一个段落
container.innerHTML = '<h2>动态生成的标题</h2><p>这是通过js输出的段落内容</p>';

常见应用场景

动态渲染列表数据

当从后端接口获取到数组类型的数据后,可以通过拼接HTML字符串,再用innerHTML输出到页面中生成列表。

// 模拟接口返回的用户列表数据
const userList = [
  { id: 1, name: '张三', age: 25 },
  { id: 2, name: '李四', age: 28 },
  { id: 3, name: '王五', age: 22 }
];
const listContainer = document.getElementById('user-list');
// 拼接HTML字符串
let htmlStr = '<ul>';
userList.forEach(user => {
  htmlStr += `<li>用户ID:${user.id},姓名:${user.name},年龄:${user.age}</li>`;
});
htmlStr += '</ul>';
// 输出到容器
listContainer.innerHTML = htmlStr;

动态生成弹窗内容

在点击按钮触发弹窗时,可以通过innerHTML动态设置弹窗内部的提示内容,实现灵活的弹窗展示。

const openModalBtn = document.getElementById('open-modal');
const modalContent = document.getElementById('modal-content');
openModalBtn.addEventListener('click', function() {
  // 动态设置弹窗内容
  modalContent.innerHTML = '<p>操作成功!</p><button id="close-modal">关闭</button>';
  // 给动态生成的关闭按钮绑定事件
  document.getElementById('close-modal').addEventListener('click', function() {
    modalContent.innerHTML = '';
  });
});

注意事项

安全问题

如果innerHTML赋值的字符串包含用户输入的内容,且没有做转义处理,很容易引发XSS攻击。比如用户输入的内容包含<script>标签,就会被直接执行。

如果必须插入用户输入的内容,需要对特殊字符进行转义,将<转义为&lt;,>转义为&gt;,&转义为&amp;等。

// 转义用户输入的特殊字符,避免XSS攻击
function escapeHtml(str) {
  const div = document.createElement('div');
  div.textContent = str;
  return div.innerHTML;
}
const userInput = '<script>alert("恶意代码")</script>';
const safeInput = escapeHtml(userInput);
container.innerHTML = `<p>用户输入内容:${safeInput}</p>`;

性能问题

频繁修改innerHTML会导致浏览器反复解析HTML、重新渲染页面,性能开销较大。如果需要多次更新内容,建议先拼接好完整的HTML字符串,再一次性赋值给innerHTML,减少渲染次数。

内容替换问题

innerHTML赋值时会完全替换元素原本的内部内容,如果需要追加内容而不是替换,可以结合原有的innerHTML拼接新的字符串:

// 追加内容而不是替换
container.innerHTML = container.innerHTML + '<p>新增的段落内容</p>';
// 也可以使用+=简写
container.innerHTML += '<p>新增的段落内容</p>';

innerHTMLJavaScript动态输出HTMLHTML渲染修改时间:2026-06-22 15:18:58

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。