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

使用JavaScript数组动态生成HTML表格:ES6模板字面量实践

陌辰大大_8641

陌辰大大_8641

发布时间:2025-09-28 21:28:01

|

647人浏览过

|

来源于php中文网

原创

使用JavaScript数组动态生成HTML表格:ES6模板字面量实践

本教程将指导您如何利用JavaScript数组数据,结合ES6的模板字面量特性,高效且优雅地动态生成HTML表格内容。我们将通过一个实际示例,展示如何避免传统字符串拼接的复杂性,直接将数据渲染到表格中,实现数据与视图的简洁绑定。

在web开发中,我们经常需要将后端获取的数据或前端定义的数据数组展示在html表格中。手动编写每个表格行既繁琐又难以维护,因此动态生成表格内容是常见的需求。本教程将介绍一种现代且高效的方法,利用javascript的es6模板字面量(template literals)来解决这一问题。

初始问题与常见误区

在尝试动态生成表格时,开发者可能会遇到一些挑战,例如数据渲染位置不正确、HTML结构混乱或代码可读性差。一个常见的尝试是使用

<table id="dataTable" width="100%" cellspacing="0">
   <thead>
     <tr>
       <th>Name</th>
       <th>Title</th>
     </tr>
   </thead>
   <tbody>
   <!-- 注意:在<tbody>内放置<div>标签是不符合HTML语义的 -->
   <div id="list"></div> 
     <template id="template">
       <tr>
         <td>{name}</td>
         <td>{title}</td>
       </tr>
     </template>
   </tbody>
</table>

对应的JavaScript代码可能如下:

const contactArray = [{"Name":"Blake Janacek","Title":"Marketing Manager"},{"Name":"Dominic Flanders","Title":"Project Manager"}]; 

const html = contactArray.map(obj => {
    let item = document.querySelector('#template').innerHTML;
    item = item.replace('{name}', obj.Name);
    item = item.replace('{title}', obj.Title);
    return item;
});
document.querySelector('#list').innerHTML = html.join(''); 

这种方法虽然可以工作,但存在几个问题:

  1. HTML语义问题: 元素内不应直接包含
    元素,这会导致浏览器解析错误或行为异常。内应直接是元素。
  2. 代码冗余: 对于每个需要替换的占位符,都需要调用一次replace方法,当字段增多时,代码会变得冗长。
  3. 可读性: 模板字符串与替换逻辑分离,降低了代码的直观性。
  4. 推荐方案:利用ES6模板字面量

    ES6引入的模板字面量(Template Literals)提供了一种更简洁、更强大的方式来创建字符串,尤其适合动态生成HTML片段。它允许我们在字符串中直接嵌入表达式,极大地简化了字符串拼接和模板渲染。

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

    1. 准备HTML结构

    Html2md
    Html2md

    使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...

    下载

    首先,我们需要一个干净的HTML表格结构,其中

    部分留空,等待JavaScript动态填充。
    <table id="dataTable" width="100%" cellspacing="0">
       <thead>
         <tr>
           <th>姓名</th>
           <th>职位</th>
         </tr>
       </thead>
       <tbody>
         <!-- JavaScript将在此处动态生成<tr>元素 -->
       </tbody>
    </table>

    2. 编写JavaScript代码

    接下来,我们将使用JavaScript数组和ES6模板字面量来生成表格行。

    const contactArray = [
      {Name:"Blake Janacek", Title:"Marketing Manager"},
      {Name:"Dominic Flanders", Title:"Project Manager"},
      {Name:"Alice Smith", Title:"Software Engineer"}
    ];
    
    // 获取表格的tbody元素
    const tableBody = document.querySelector("#dataTable tbody");
    
    // 使用map方法遍历数组,并为每个对象生成一个<tr>字符串
    const tableRows = contactArray.map(({ Name, Title }) => {
      // 使用模板字面量(反引号 ` ` ` )创建字符串
      // ${} 内部可以直接嵌入JavaScript表达式
      return `<tr>
                <td>${Name}</td>
                <td>${Title}</td>
              </tr>`;
    });
    
    // 将所有生成的<tr>字符串连接起来,并赋值给tbody的innerHTML
    tableBody.innerHTML = tableRows.join("\n");
    
    // 完整代码示例
    /*
    const contactArray = [
     {Name:"Blake Janacek",Title:"Marketing Manager"},
     {Name:"Dominic Flanders",Title:"Project Manager"} ];
    
    document.querySelector("#dataTable tbody").innerHTML=
      contactArray.map(({Name,Title})=>
       `<tr>
          <td>${Name}</td>
          <td>${Title}</td>
        </tr>`).join("\n");
    */

    代码解析:

    • contactArray.map(...): map方法是数组的一个高阶函数,它会遍历数组中的每个元素,并对每个元素执行一个回调函数。回调函数的返回值将组成一个新的数组。在这里,每个回调函数都返回一个表示的字符串。
    • ({ Name, Title }) => { ... }: 这是ES6的箭头函数语法,并且使用了对象解构(Object Destructuring)。它直接从contactArray中的每个对象中提取Name和Title属性,使代码更加简洁,避免了obj.Name这样的写法。
    • 反引号 `: 这是模板字面量的标志。它允许字符串跨越多行,并且可以直接在其中嵌入表达式。
    • ${Name} 和 ${Title}: 这是模板字面量中的占位符语法。${} 内部可以放置任何JavaScript表达式,其结果会被转换为字符串并插入到模板中。
    • .join("\n"): map方法返回的是一个字符串数组(每个元素是一个字符串)。join("\n")将这些字符串连接成一个大的字符串,每个 之间用换行符分隔,这有助于保持生成的HTML代码的格式整洁。
    • tableBody.innerHTML = ...: 最后,将生成的完整HTML字符串赋值给元素的innerHTML属性,浏览器会自动解析并渲染这些HTML。

      优点总结

      使用ES6模板字面量动态生成HTML表格具有以下显著优点:

      1. 简洁性与可读性: 将HTML结构和数据嵌入逻辑紧密结合,代码更易于理解和维护。
      2. 避免字符串拼接复杂性: 无需使用+操作符进行复杂的字符串拼接,减少了出错的可能性。
      3. 多行字符串支持: 反引号允许字符串跨越多行,使得HTML模板的编写更加自然和直观。
      4. 表达式嵌入: ${} 语法强大灵活,可以直接在模板中执行简单的JavaScript逻辑。
      5. 符合HTML语义: 直接将元素插入到 中,确保了表格结构的正确性。

        注意事项

        • 安全性: 如果您要渲染的数据来源于用户输入,请务必对数据进行HTML转义,以防止跨站脚本攻击(XSS)。直接使用innerHTML插入未经验证的用户内容是非常危险的。对于本教程中的静态数据,这不是问题。
        • 性能: 对于非常大的数据集(例如数千行),频繁操作innerHTML可能会有性能开销。在这种情况下,可以考虑使用文档片段(DocumentFragment)来批量插入DOM元素,或者使用虚拟DOM库(如React, Vue)来优化渲染性能。
        • 复杂模板: 对于更复杂的模板逻辑(如条件渲染、循环嵌套等),可以考虑使用专门的模板引擎(如Handlebars, EJS)或前端框架。

        通过掌握ES6模板字面量,您可以更高效、更优雅地处理Web页面中的动态内容渲染,特别是在生成表格这类重复性结构时,它能极大地提升开发效率和代码质量。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

DeepSeek

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

豆包大模型

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

WorkBuddy

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

切问学术

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

立刻MV
立刻MV Hot

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

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

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

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

285

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

406

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

375

2025.12.24

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

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

1798

2023.08.03

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

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

2804

2023.09.04

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

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

6164

2023.10.24

字符串介绍
字符串介绍

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

5889

2023.11.24

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

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

7514

2024.03.22

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

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

60

2026.10.22

热门下载

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

精品课程

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

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.3万人学习

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

共26课时 | 2.5万人学习

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

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