讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在DOM中将JavaScript数组数据渲染为列表元素

小芳小哥_5226

小芳小哥_5226

发布时间:2025-11-08 11:22:02

|

747人浏览过

|

来源于php中文网

原创

如何在DOM中将JavaScript数组数据渲染为列表元素

本教程详细介绍了如何将javascript数组中存储的数据动态地渲染到html的无序列表(`

    `)中。通过迭代数组元素并构建html字符串,然后使用`innerhtml`将其插入到dom,您可以实现数据与视图的有效分离与展示。文章还强调了使用`innerhtml`时潜在的安全风险(xss)以及相应的防范措施。

    在Web开发中,经常需要将JavaScript中存储的数据(例如数组)动态地展示在用户界面上。一个常见的场景是将一个字符串数组渲染成HTML的无序列表(<ul>)中的列表项(<li>)。本教程将指导您如何实现这一功能,并提供一个完整的示例。

    核心概念

    实现这一目标的关键在于:

  1. 获取数据: 从JavaScript数组中获取需要展示的每个元素。
  2. 构建HTML字符串: 遍历数组,为每个元素生成对应的HTML <li> 标签。
  3. 更新DOM: 将生成的完整HTML字符串插入到目标 <ul> 元素的 innerHTML 属性中。

示例代码与实现步骤

我们将通过一个简单的网页应用来演示如何保存用户输入的链接并将其显示为列表。

1. HTML 结构

首先,我们需要一个基本的HTML结构,包括一个输入框、保存按钮以及一个用于显示链接的无序列表。

立即学习“Java免费学习笔记(深入)”;

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>链接列表管理</title>
</head>
<body>
    <input id="input-el" title="lead" placeholder="输入网址" type="text">
    <button id="input-btn">保存链接</button>
    <button id="del-btn">删除所有</button>
    <div>
        <h2>我的链接</h2>
        <ul id="display_link-el"></ul>
    </div>

    <script src="index.js"></script>
</body>
</html>

在这个HTML中:

html-to-pptx-converter
html-to-pptx-converter

使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。

下载
  • input-el:用户输入链接的文本框。
  • input-btn:触发保存操作的按钮。
  • del-btn:触发删除所有链接操作的按钮(本教程主要关注显示功能,删除功能可自行扩展)。
  • display_link-el:我们将把JavaScript数组中的链接渲染到这个 <ul> 元素中。

2. JavaScript 逻辑

接下来,我们将编写JavaScript代码来处理数据存储、渲染和事件监听。

// index.js

let linksArray = []; // 用于存储链接的数组
const inputEl = document.getElementById("input-el"); // 获取输入框元素
const displayEl = document.getElementById("display_link-el"); // 获取显示链接的UL元素
const inputBtn = document.getElementById("input-btn"); // 获取保存按钮
const delBtn = document.getElementById("del-btn"); // 获取删除按钮

// 尝试从localStorage加载已保存的链接
const linksFromLocalStorage = JSON.parse(localStorage.getItem("mylinks"));
if (linksFromLocalStorage) {
    linksArray = linksFromLocalStorage;
    renderLinksAsList(linksArray); // 页面加载时渲染已保存的链接
}

// 绑定保存按钮的点击事件
inputBtn.addEventListener("click", function() {
    saveLink();
});

// 绑定删除按钮的双击事件
delBtn.addEventListener("dblclick", function() {
    clearLinks();
});

/**
 * 将当前输入框中的链接保存到数组并更新DOM和localStorage
 */
function saveLink() {
    const linkValue = inputEl.value.trim(); // 获取输入值并去除首尾空格
    if (linkValue) { // 确保输入不为空
        linksArray.push(linkValue);
        inputEl.value = ""; // 清空输入框

        // 更新localStorage
        localStorage.setItem("mylinks", JSON.stringify(linksArray));

        // 重新渲染列表
        renderLinksAsList(linksArray);
    }
}

/**
 * 将JavaScript数组中的链接渲染为HTML列表项
 * @param {string[]} array - 包含链接字符串的数组
 */
function renderLinksAsList(array) {
    let listItems = ""; // 用于构建HTML字符串
    for (let i = 0; i < array.length; i++) {
        // 构建每个<li>元素,可以根据需要添加链接属性等
        listItems += `<li><a target="_blank" href="${array[i]}">${array[i]}</a></li>`;
    }
    // 将构建好的HTML字符串插入到DOM中
    displayEl.innerHTML = listItems;
}

/**
 * 清空所有链接并更新DOM和localStorage
 */
function clearLinks() {
    linksArray = []; // 清空数组
    localStorage.clear(); // 清空localStorage
    renderLinksAsList(linksArray); // 渲染空列表
}

代码解析:

  1. 初始化与DOM元素获取:
    • linksArray:一个空数组,用于存储所有输入的链接。
    • inputEl, displayEl, inputBtn, delBtn:通过document.getElementById获取对应的DOM元素,方便后续操作。
  2. localStorage 加载:
    • 在脚本加载时,尝试从localStorage中读取名为"mylinks"的数据。如果存在,将其解析为JavaScript数组并赋值给linksArray,然后立即调用renderLinksAsList函数将已保存的链接显示出来。
  3. 事件监听:
    • inputBtn.addEventListener("click", saveLink):为保存按钮添加点击事件监听器,点击时调用saveLink函数。
    • delBtn.addEventListener("dblclick", clearLinks):为删除按钮添加双击事件监听器,双击时调用clearLinks函数。
  4. saveLink 函数:
    • 获取inputEl.value,并使用trim()去除可能的空白字符。
    • 如果输入值不为空,将其push到linksArray中。
    • 清空输入框inputEl.value = ""。
    • 使用localStorage.setItem("mylinks", JSON.stringify(linksArray))将更新后的数组保存到本地存储。JSON.stringify用于将JavaScript数组转换为字符串以便存储。
    • 调用renderLinksAsList(linksArray)来更新页面上显示的列表。
  5. renderLinksAsList 函数(核心):
    • 声明一个空字符串listItems,用于逐步构建所有<li>元素的HTML。
    • 使用for循环遍历linksArray中的每一个链接。
    • 在循环内部,通过字符串模板(或字符串拼接)为每个链接生成一个<li>元素。这里我们还添加了<a>标签,使其成为可点击的链接,并设置target="_blank"在新标签页打开。
    • 循环结束后,将完整的listItems字符串赋值给displayEl.innerHTML。这会用新的HTML内容替换<ul>元素内部的所有子元素,从而更新页面显示。
  6. clearLinks 函数:
    • 将linksArray重置为空数组。
    • 调用localStorage.clear()清空所有本地存储数据(或者只清除"mylinks")。
    • 调用renderLinksAsList(linksArray)渲染一个空列表。

注意事项与安全提示

  1. XSS 漏洞风险:

    • 当使用innerHTML将用户提供的数据直接插入DOM时,存在跨站脚本攻击(XSS)的风险。如果用户输入恶意脚本(例如 <script>alert('XSS!');</script>),它将会被浏览器执行。
    • 防范措施: 在将用户输入的数据插入DOM之前,务必进行输入过滤和内容净化。这通常涉及将特殊HTML字符(如 <, >, &, ", ')转义为HTML实体(例如 < 变为
  2. 性能考虑:

    • 对于小型列表,每次更新都重新构建整个HTML字符串并赋值给innerHTML是高效且简洁的。
    • 对于非常大的列表(成千上万个元素)或频繁的更新,反复操作innerHTML可能会导致性能问题。在这种情况下,可以考虑以下替代方案:
      • document.createElement: 动态创建DOM元素,然后使用appendChild或insertBefore将其添加到DOM中。这种方法通常更安全,因为浏览器会正确处理文本内容,避免XSS,并且可以更精细地控制DOM操作。
      • 文档片段(DocumentFragment): 批量创建DOM元素,将它们添加到DocumentFragment中,然后一次性将DocumentFragment添加到DOM树中,减少DOM重绘和回流的次数。
      • 虚拟DOM库: 对于更复杂的应用,React、Vue等框架通过虚拟DOM机制来优化DOM操作。
  3. 用户体验:

    • 在实际应用中,可以考虑添加加载状态、错误处理和用户友好的提示信息。

总结

通过本教程,您应该已经掌握了如何使用JavaScript将数组中的数据动态地渲染为HTML无序列表。核心步骤包括遍历数组、构建HTML字符串,并通过innerHTML将其插入到DOM。同时,请务必牢记innerHTML带来的XSS安全风险,并在实际项目中采取适当的防范措施。对于更高级的需求,可以探索使用document.createElement或其他前端框架来获得更好的性能和安全性。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2155

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3322

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1116

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3799

2025.09.10

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1758

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2744

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6104

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

5769

2023.11.24

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn