news 2026/9/21 18:28:32

以下是使用JavaScript动态拼接数组内容到HTML的多种方法及示例:

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
以下是使用JavaScript动态拼接数组内容到HTML的多种方法及示例:

一、基础方法:字符串拼接 +innerHTML

适用场景:简单文本内容快速渲染

示例代码

<div id="output"></div> <script> const data = ["苹果", "香蕉", "橙子"]; let html = ""; data.forEach(item => { html += `<p>${item}</p>`; }); document.getElementById("output").innerHTML = html; </script>

特点:代码简洁,但需注意XSS风险,不适合复杂结构。


二、DOM操作:动态创建元素

适用场景:需要操作元素属性或事件

示例代码

<ul id="fruits"></ul> <script> const data = ["苹果", "香蕉", "橙子"]; const ul = document.getElementById("fruits"); data.forEach(item => { const li = document.createElement("li"); li.textContent = item; li.style.color = "blue"; // 可添加样式/事件 ul.appendChild(li); }); </script>

优势:避免XSS,支持动态交互。


三、模板字符串 +insertAdjacentHTML

适用场景:混合静态与动态内容

示例代码

<div id="container"></div> <script> const data = [18, 25, 30]; const container = document.getElementById("container"); const template = ` <div class="user"> <span>年龄:${data[0]}</span> <span>身高:${data[1]}</span> <span>体重:${data[2]}</span> </div> `; container.insertAdjacentHTML("beforeend", template); </script>

特点:保持HTML结构清晰,适合复杂模板。


四、处理对象数组

适用场景:渲染包含多个属性的数据

示例代码

<ul id="users"></ul> <script> const users = [ { name: "张三", age: 28 }, { name: "李四", age: 32 } ]; const ul = document.getElementById("users"); users.forEach(user => { const li = document.createElement("li"); li.innerHTML = `<strong>${user.name}</strong> - ${user.age}岁`; ul.appendChild(li); }); </script>

扩展:可结合模板引擎库(如Handlebars)实现更复杂渲染。


五、性能优化方案

  1. 文档片段(DocumentFragment)

    减少DOM操作次数,提升性能:

    const fragment = document.createDocumentFragment(); data.forEach(item => { const li = document.createElement("li"); li.textContent = item; fragment.appendChild(li); }); document.getElementById("list").appendChild(fragment);
  2. 分页加载

    大数据量时分批渲染:

    let page = 0; function loadPage(size) { const chunk = data.slice(page * size, (page+1)*size); // 渲染chunk到页面 page++; }

六、框架方案对比

框架

语法示例

特点

原生JS

element.innerHTML = data.map(...)

灵活但代码冗长

React

{data.map(item => <li>{item}</li>)}

组件化,虚拟DOM优化

Vue

{{ item }}在模板中直接绑定

声明式语法,双向绑定


七、安全注意事项

  1. 转义用户输入

    使用textContent而非innerHTML避免XSS:

    element.textContent = userInput; // 自动转义
  2. 内容安全策略(CSP)

    服务器端设置CSP头限制脚本执行。


通过上述方法,您可以根据需求选择最适合的动态渲染方案。简单场景推荐innerHTML拼接,复杂交互建议使用DOM操作,大数据量时结合分页或文档片段优化性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 21:31:47

【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发

选题的背景城市化进程的不断加快以及城市居民汽车保有量的持续增加&#xff0c;造成城市道路上停车难的问题更加突出。目前城市的停车主要存在停车难、停车管理效率低、停车体验差等状况&#xff0c;传统的停车管理手段已不能够应付越来越大的停车需求[1]。 本课题的目的是以小…

作者头像 李华
网站建设 2026/9/21 4:48:32

Doris的自增列介绍

好的,我们来介绍 Doris 中的 自增列 功能。 在 Doris(一个开源的、基于 MPP 架构的分布式 SQL 数据仓库)中,自增列 是一种特殊的列类型,其主要目的是为表中的每一行数据自动生成一个全局唯一且单调递增的整数值(BIGINT 类型)。这个特性在分布式数据库环境中尤其有价值,…

作者头像 李华
网站建设 2026/9/21 10:23:44

C++编程实践——多线程变量共享问题展开分析

一、问题现象描述 在C编程的技术点中&#xff0c;多线&#xff08;进&#xff09;程的编程是一个非常让人上头的内容。这种情况其实还可以拓展到一些抽象的场景&#xff0c;比如信号、消息和异步等情况。它们看上去和多线程关系不大&#xff0c;但其实内部和多线程都有着密不可…

作者头像 李华
网站建设 2026/9/22 0:36:51

【Android FrameWork】第三十六天:随机数EntropyMixer

Android EntropyService 在 Android 系统中&#xff0c;EntropyService&#xff08;后更名为 EntropyMixer&#xff09; 是保障随机数安全性的核心服务之一。 它通过维护内核熵池&#xff08;Entropy Pool&#xff09;&#xff0c;解决了系统启动初期随机数可预测的问题&#x…

作者头像 李华
网站建设 2026/9/21 21:42:43

介观交通流仿真软件:VISSIM (介观模式)_(16).高级仿真技术

高级仿真技术 在上一节中&#xff0c;我们介绍了如何使用VISSIM进行基本的交通流仿真设置和运行。本节将深入探讨VISSIM的高级仿真技术&#xff0c;帮助用户在更复杂的交通场景中进行仿真分析。我们将重点介绍以下内容&#xff1a;自定义交通模型、交通事件的动态管理、信号控制…

作者头像 李华
网站建设 2026/9/20 17:25:51

安卓 之 PassthruPatchRecord

1. 类介绍 PassthruPatchRecord 是 Android AudioFlinger 中一个特殊的 patch。它的核心设计目标是实现一种 “直通” 模式,用于 AUDIO_SOURCE_VOICE_PERFORMANCE 等需要极低延迟的音频场景。 • 继承关系: PassthruPatchRecord -> PatchRecord -> RecordTrack ->…

作者头像 李华