news 2026/6/15 15:28:42

以下是使用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/6/15 12:27:05

Doris安装 FE

好的,我们来详细说明如何安装 Apache Doris 的前端(FE)节点。FE 负责元数据管理、集群管理、查询解析和规划等任务。以下是安装步骤: 编辑 FE 配置文件 apache-doris/fe/conf/fe.conf,修改以下参数: ## 指定 Java 环境 JAVA_HOME=/home/doris/jdk # 指定 FE 监听 IP 的…

作者头像 李华
网站建设 2026/6/15 13:15:28

Android 14.0 framework监听某个app启动获取应用使用时长功能实现

1.前言 在进行14.0的系统定制开发中&#xff0c;在某些app的定制过程中&#xff0c;需要知道某个app的启动时候然后获取 应用使用时长的功能&#xff0c;所以就需要监听某个app的启动后就获取使用时长&#xff0c;需要在Activity的生命周期中来实现监听功能 2.frameworks监听…

作者头像 李华
网站建设 2026/6/15 5:37:27

深度学习框架目标检测算法YOLOV8预训练模型训练海上落水人员及障碍物数据集建立基于深度学习YOLOV8海上落水人员检测系统 海上搜救无人机 - 智慧海事监控平台

海上落水人员及障碍物数据集&#xff0c;有500多张并已经标注好了txt格式。已经划分hao训练集和验证集&#xff0c;可直接训练&#xff0c;【来源自建】 2类【溺水人员&#xff0c;障碍物】11海上落水人员及障碍物检测数据集 的完整 YOLOv8 训练与检测系统方案&#xff0c;包含…

作者头像 李华
网站建设 2026/6/15 12:18:52

springboot美容院管理系统(11523)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华
网站建设 2026/6/15 8:26:44

轻量化深度学习模型(EEGNet)

EEGNet是一种专为脑电图&#xff08;EEG&#xff09;信号处理设计的紧凑型卷积神经网络&#xff08;CNN&#xff09;&#xff0c;核心定位是在资源受限场景下实现高效的脑电信号分类&#xff0c;尤其适用于脑机接口&#xff08;BCI&#xff09;领域。与传统深度学习模型相比&am…

作者头像 李华
网站建设 2026/6/15 11:25:10

PySide6从0开始学习的笔记(十) 样式表(QSS)

PySide6 的样式表&#xff08;Qt Style Sheets&#xff0c;QSS&#xff09;是模仿 CSS 语法的界面美化机制&#xff0c;用于统一控制 PySide6 控件的外观&#xff0c;从基础的颜色、字体到复杂的控件状态、自定义控件样式都能覆盖。一、QSS 基础核心1.1 基本语法结构QSS 语法与…

作者头像 李华