javascript遍历数组生成html列表应优先用createelement+textcontent防xss,for循环逐个创建li并appendchild;若数据可信可用innerhtml批量插入;复杂结构推荐template标签配合clonenode复用。

用 JavaScript 遍历数组并动态生成 HTML 列表节点,核心是:遍历数据 → 拼接或创建元素 → 插入到页面中。关键在于避免直接拼接字符串导致 XSS 风险,推荐用 document.createElement 或 innerHTML(确保数据可信)结合循环实现。
用 for 循环 + createElement 动态添加 li
安全、可控,适合需要绑定事件或后续操作单个列表项的场景:
- 遍历数组,每次调用
document.createElement('li')创建新节点 - 用
textContent设置文本(防 XSS),或innerHTML插入带标签的内容(需自行过滤) - 用
appendChild追加到已存在的ul或ol元素中
const items = ['苹果', '香蕉', '橙子'];
const ul = document.getElementById('fruitList');
for (let i = 0; i
<h3>用 forEach + innerHTML 批量插入(简洁高效)</h3>
<p>适合纯展示、数据可信、追求代码简洁的场景:</p>
- 用
array.map()把每个数组项转成<li>xxx</li>字符串 - 用
join('')合并为完整 HTML 片段 - 一次性赋给容器的
innerHTML,浏览器自动解析渲染
const items = ['React', 'Vue', 'Svelte']; const htmlString = items.map(item => `
用 template 标签预定义结构(推荐用于复杂列表)
当每个列表项含多层嵌套、图标、按钮等,用 <template></template> 可提升可读性和复用性:
- 在 HTML 中定义一个
<template id="itemTemplate"><li> <span class="name"></span><button class="del">删除</button> </li></template> - JS 中用
content.cloneNode(true)复制模板,再填充数据、绑定事件 - 最后 append 到目标列表容器
.content 访问。
注意事项与避坑点
- 不要在循环中反复读取
innerHTML再拼接(性能差,且会重置已绑定的事件) - 避免用
+=修改 innerHTML(会触发多次 DOM 解析) - 如果数组来自用户输入或 API,务必对内容做转义(如用
textContent或DOMPurify库) - 动态添加后若需操作新节点(如点击事件),建议用事件委托(监听 ul,判断 event.target)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











