讲师中心 微信公众号

工具推荐

视频效率加速
立刻MV
立刻MV

低成本歌曲 MV、视频生成

Laper
Laper

剧本策划到成片协作

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

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

梦明酱_4889

梦明酱_4889

发布时间:2025-11-02 12:55:01

|

883人浏览过

|

来源于php中文网

原创

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

本教程详细讲解如何将javascript数组中的数据高效地渲染为dom中的无序列表(`

    `)项。文章通过构建html字符串并利用`innerhtml`属性实现动态更新,同时强调了使用`innerhtml`时可能存在的跨站脚本(xss)风险,并提供了相应的安全防护建议,旨在帮助开发者安全且有效地在网页上展示动态数据。

    动态渲染JavaScript数组为DOM列表元素

    在Web开发中,经常需要将后端获取或用户输入的动态数据以列表形式展示在页面上。JavaScript数组是存储这类数据的常见结构,而将其内容渲染为HTML的无序列表(

      )或有序列表(
    )是基础且重要的技能。本节将详细介绍如何实现这一功能,并提供安全实践建议。

    核心原理:构建HTML字符串并更新DOM

    将JavaScript数组转换为DOM列表元素的核心思路是:遍历数组中的每个元素,为每个元素生成一个对应的列表项(

  1. )的HTML字符串,然后将所有这些列表项拼接成一个完整的HTML字符串,最后将这个完整的HTML字符串赋值给目标
      或
      元素的innerHTML属性。

      1. 构建列表项HTML字符串

      首先,我们需要一个函数来接收一个JavaScript数组,并返回一个包含所有列表项的HTML字符串。

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

      cn-json-diff
      cn-json-diff

      比较两个 JSON 文件并显示差异。支持嵌套结构、数组及值变更。纯 Python 标准库实现,无需 API 密钥。

      下载
      /**
       * 将JavaScript数组转换为包含<li>元素的HTML字符串。
       * @param {Array<string>} arr - 包含要显示的数据的字符串数组。
       * @returns {string} 包含所有<li>元素的HTML字符串。
       */
      function convertToListLi(arr) {
        let listItemsHtml = ""; // 初始化一个空字符串,用于累加所有<li>元素
        for (let i = 0; i < arr.length; i++) {
          // 拼接每个数组元素为一个<li>标签
          // 注意:此处未进行XSS过滤,生产环境应严格处理用户输入
          listItemsHtml += `<li>${arr[i]}</li>`;
        }
        return listItemsHtml; // 返回最终的HTML字符串
      }

      在上述代码中,我们声明了一个listItemsHtml变量来存储生成的HTML。在循环中,我们使用模板字符串(反引号 `)来方便地将数组元素arr[i]嵌入到

    1. 标签中,并将其追加到listItemsHtml变量。

      2. 将HTML字符串渲染到DOM

      有了生成HTML字符串的函数后,下一步就是将其插入到DOM中。这通常在一个事件处理函数(例如点击按钮)中完成。

      let linksArray = []; // 存储链接数据的数组
      const inputEl = document.getElementById("input-el"); // 获取输入框元素
      const displayEl = document.getElementById("display_link-el"); // 获取目标<ul>元素
      
      /**
       * 保存用户输入并更新DOM列表。
       */
      function save() {
        const inputValue = inputEl.value.trim(); // 获取输入值并去除首尾空格
        if (inputValue) { // 确保输入不为空
          linksArray.push(inputValue); // 将新输入添加到数组
          inputEl.value = ""; // 清空输入框
      
          // 将更新后的数组渲染到DOM
          displayEl.innerHTML = convertToListLi(linksArray);
      
          // 可选:将数据保存到localStorage,以便页面刷新后仍能保留
          localStorage.setItem("mylinks", JSON.stringify(linksArray));
        }
      }

      这里需要注意的是,我们使用displayEl.innerHTML = convertToListLi(linksArray);来更新DOM。innerHTML属性允许我们设置或获取元素的HTML内容。与textContent不同,innerHTML会解析并渲染HTML标签,使其成为实际的DOM元素。

      完整示例代码

      下面是一个包含HTML结构和JavaScript逻辑的完整示例,演示了如何通过用户输入动态地添加和显示列表项。

      <!DOCTYPE html>
      <html lang="zh-CN">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>动态渲染数组为DOM列表</title>
          <style>
              body { font-family: Arial, sans-serif; margin: 20px; background-color: #f4f4f4; color: #333; }
              h1, h2 { color: #0056b3; }
              div { margin-bottom: 15px; }
              input[type="text"] {
                  padding: 10px;
                  margin-right: 10px;
                  border: 1px solid #ccc;
                  border-radius: 4px;
                  width: 250px;
                  box-sizing: border-box;
              }
              button {
                  padding: 10px 20px;
                  background-color: #007bff;
                  color: white;
                  border: none;
                  border-radius: 4px;
                  cursor: pointer;
                  font-size: 16px;
                  transition: background-color 0.2s ease;
              }
              button:hover { background-color: #0056b3; }
              button#del-btn { background-color: #dc3545; }
              button#del-btn:hover { background-color: #c82333; }
              ul {
                  list-style-type: decimal; /* 使用数字列表 */
                  padding-left: 25px;
                  margin-top: 15px;
                  background-color: #fff;
                  border: 1px solid #eee;
                  border-radius: 4px;
                  padding-top: 10px;
                  padding-bottom: 10px;
              }
              li {
                  margin-bottom: 8px;
                  line-height: 1.5;
              }
          </style>
      </head>
      <body>
          <h1>动态列表渲染示例</h1>
          <div>
              <input id="input-el" title="lead" placeholder="输入链接或文本" type="text">
              <button id="input-btn" onclick="save()">保存到列表</button>
              <button id="del-btn" ondblclick="delLeads()">删除所有</button>
          </div>
          <div>
              <h2>我的动态列表</h2>
              <ul id="display_link-el"></ul>
          </div>
      
          <script>
              let linksArray = []; // 存储链接数据的数组
              const inputEl = document.getElementById("input-el"); // 获取输入框元素
              const displayEl = document.getElementById("display_link-el"); // 获取目标<ul>元素
      
              // 页面加载时尝试从localStorage加载数据
              const storedLinks = JSON.parse(localStorage.getItem("mylinks"));
              if (storedLinks) {
                  linksArray = storedLinks;
                  displayEl.innerHTML = convertToListLi(linksArray); // 初始渲染
              }
      
              /**
               * 将JavaScript数组转换为包含<li>元素的HTML字符串。
               * @param {Array<string>} arr - 包含要显示的数据的字符串数组。
               * @returns {string} 包含所有<li>元素的HTML字符串。
               */
              function convertToListLi(arr) {
                  let listItemsHtml = "";
                  for (let i = 0; i < arr.length; i++) {
                      // 注意:这里直接使用了数组元素,未进行XSS过滤。
                      // 生产环境中,对于用户输入的内容,必须先进行转义或净化。
                      listItemsHtml += `<li>${arr[i]}</li>`;
                  }
                  return listItemsHtml;
              }
      
              /**
               * 保存用户输入并更新DOM列表。
               */
              function save() {
                  const inputValue = inputEl.value.trim();
                  if (inputValue) {
                      linksArray.push(inputValue);
                      inputEl.value = ""; // 清空输入框
      
                      // 渲染更新后的数组到DOM
                      displayEl.innerHTML = convertToListLi(linksArray);
      
                      // 保存到localStorage
                      localStorage.setItem("mylinks", JSON.stringify(linksArray));
                  }
              }
      
              /**
               * 删除所有链接的示例函数。
               * 生产环境中应包含更详细的确认弹窗和数据清理

热门AI工具

更多
DeepSeek

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

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

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

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

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

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

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

相关专题

更多
js 字符串转数组
js 字符串转数组

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

1898

2023.08.03

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

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

3104

2023.09.04

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

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

6344

2023.10.24

字符串介绍
字符串介绍

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

6409

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

7974

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

12234

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

6339

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

7087

2025.08.07

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习

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

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