JS如何操作DOM基于表格动态展示数据

操作DOM基于表格动态展示数据是Web开发中常用的技术。JavaScript是DOM操作的主力军。下面是操作DOM基于表格动态展示数据的完整攻略:

1. 数据渲染

在JavaScript中,可以通过插值表达式、DOM操作等方式将数据渲染到HTML页面。下面我们将介绍两个渲染数据的示例。

1.1 使用innerHTML渲染表格

使用innerHTML属性,可以将一个字符串插入到指定DOM元素中。我们可以根据数据动态生成HTML字符串,并使用innerHTML属性把字符串插入到表格的tbody中,从而渲染表格。

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="table-data">

  </tbody>
</table>

<script>
  // 数据
  const data = [
    { name: 'Alice', age: 20, email: 'alice@example.com' },
    { name: 'Bob', age: 30, email: 'bob@example.com' },
    { name: 'Charlie', age: 40, email: 'charlie@example.com' }
  ];

  // 渲染表格
  const tableDataEl = document.getElementById('table-data');
  let tableHtml = '';
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    tableHtml += `
      <tr>
        <td>${item.name}</td>
        <td>${item.age}</td>
        <td>${item.email}</td>
      </tr>
    `;
  }
  tableDataEl.innerHTML = tableHtml;
</script>

上面代码中,使用innerHTML属性将tableHtml插入到tbody元素中,从而渲染出表格。

1.2 使用DocumentFragment渲染表格

将HTML字符串插入到innerHTML属性的缺点在于,会导致页面进行重排和重绘,性能不佳。我们可以使用DocumentFragment对象来避免这种性能问题。

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="table-data">

  </tbody>
</table>

<script>
  // 数据
  const data = [
    { name: 'Alice', age: 20, email: 'alice@example.com' },
    { name: 'Bob', age: 30, email: 'bob@example.com' },
    { name: 'Charlie', age: 40, email: 'charlie@example.com' }
  ];

  // 渲染表格
  const tableDataEl = document.getElementById('table-data');
  const tableFragment = document.createDocumentFragment();
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    const tr = document.createElement('tr');
    const nameTd = document.createElement('td');
    nameTd.textContent = item.name;
    const ageTd = document.createElement('td');
    ageTd.textContent = item.age;
    const emailTd = document.createElement('td');
    emailTd.textContent = item.email;
    tr.appendChild(nameTd);
    tr.appendChild(ageTd);
    tr.appendChild(emailTd);
    tableFragment.appendChild(tr);
  }
  tableDataEl.appendChild(tableFragment);
</script>

上面代码中,使用document.createFragment()创建了一个DocumentFragment对象。然后,使用document.createElement()创建了tr和td元素,使用textContent属性设置文本内容,最后将tr和td元素依次添加到DocumentFragment中,然后通过tableDataEl.appendChild()方法将DocumentFragment插入到table中。

2. 数据更新

当数据发生变化时,我们需要根据最新的数据更新表格。下面我们将介绍两个数据更新的示例。

2.1 直接更新innerHTML

与渲染时使用innerHTML一样,当数据更新时,我们也可以再次使用innerHTML来更新表格。

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="table-data">

  </tbody>
</table>

<script>
  // 数据
  let data = [
    { name: 'Alice', age: 20, email: 'alice@example.com' },
    { name: 'Bob', age: 30, email: 'bob@example.com' },
    { name: 'Charlie', age: 40, email: 'charlie@example.com' }
  ];

  // 渲染表格
  const tableDataEl = document.getElementById('table-data');
  let tableHtml = '';
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    tableHtml += `
      <tr>
        <td>${item.name}</td>
        <td>${item.age}</td>
        <td>${item.email}</td>
      </tr>
    `;
  }
  tableDataEl.innerHTML = tableHtml;

  // 更新数据
  setTimeout(() => {
    data[0].name = 'Alex';
    data[1].age = 35;
    data[2].email = 'charlie234@example.com';
    tableHtml = '';
    for (let i = 0; i < data.length; i++) {
      const item = data[i];
      tableHtml += `
        <tr>
          <td>${item.name}</td>
          <td>${item.age}</td>
          <td>${item.email}</td>
        </tr>
      `;
    }
    tableDataEl.innerHTML = tableHtml;
  }, 3000);
</script>

上面代码中,当数据发生变化时,我们再次使用innerHTML将最新的HTML内容插入到tbody元素中,实现了数据更新的效果。

2.2 只更新发生变化的那些项

当数据发生变化时,只更新发生变化的那些项,可以减少DOM操作的数量,提高性能。

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody id="table-data">

  </tbody>
</table>

<script>
  // 数据
  let data = [
    { name: 'Alice', age: 20, email: 'alice@example.com' },
    { name: 'Bob', age: 30, email: 'bob@example.com' },
    { name: 'Charlie', age: 40, email: 'charlie@example.com' }
  ];

  // 渲染表格
  const tableDataEl = document.getElementById('table-data');
  let tableHtml = '';
  for (let i = 0; i < data.length; i++) {
    const item = data[i];
    tableHtml += `
      <tr>
        <td data-key="name">${item.name}</td>
        <td data-key="age">${item.age}</td>
        <td data-key="email">${item.email}</td>
      </tr>
    `;
  }
  tableDataEl.innerHTML = tableHtml;

  // 更新数据
  setTimeout(() => {
    data[0].name = 'Alex';
    data[1].age = 35;
    data[2].email = 'charlie234@example.com';

    for (let i = 0; i < data.length; i++) {
      const item = data[i];
      const tr = tableDataEl.children[i];
      for (let j = 0; j < tr.children.length; j++) {
        const td = tr.children[j];
        const key = td.dataset.key;
        if (item[key] !== td.textContent) {
          td.textContent = item[key];
        }
      }
    }
  }, 3000);
</script>

上面代码中,当数据发生变化时,我们首先给每个td元素添加了data-key属性,表示该元素对应的数据项。然后,我们遍历每个数据项和每个td元素,如果数据项和td元素中对应的值不一样,就更新td元素的textContent属性,实现了数据更新的效果。

以上就是JavaScript如何操作DOM基于表格动态展示数据的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS如何操作DOM基于表格动态展示数据 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js创建数组的简单方法

    当我们需要在JavaScript程序中储存一组数据时,往往会使用数组这种数据结构。那么,如何在JavaScript中创建一个数组呢?接下来,我将为你讲解几种简单易用的方法。 直接使用方括号 [ ] 我们可以直接使用方括号来创建一个数组,数组的每一个元素通过逗号进行分割。 let arr = [1, 2, 3, 4, 5]; console.log(arr);…

    JavaScript 2023年5月27日
    00
  • JavaScript中操作字符串小结

    下面是对于“JavaScript中操作字符串小结”的完整攻略: JavaScript字符串操作小结 在JavaScript中,字符串是一种表示文本的数据类型。当我们想要在编程中操作文本数据时,字符串就成为了非常重要的一种数据类型。同时,JavaScript也提供了很多方便的API来帮助我们处理字符串。本文将会总结一些常用的字符串操作方法,帮助大家高效地处理字…

    JavaScript 2023年5月18日
    00
  • Web Components实现类Element UI中的Card卡片

    Web Components是一种新的Web开发标准,提供了一种封装和组合Web页面元素的方式。其中,类Element UI中的Card卡片是一种常用的UI组件,本文将详细讲解如何使用Web Components来实现这种卡片。 一、创建Card组件原型 首先,我们需要创建一个Card组件原型,可以使用ES6的类来实现: class Card extends…

    JavaScript 2023年6月11日
    00
  • JS中SetTimeout和SetInterval使用初探

    我来为你详细讲解一下 “JS中SetTimeout和SetInterval使用初探”的攻略,包括示例说明: 简介 在 JS 中,setTimeout 和 setInterval 都能用来设置定时器,它们都是 window 对象的方法。它们非常常用,能够通过回调函数的方式实现一些延时操作或者是循环操作。这里我会结合示例带领大家初步了解它们的使用。 setTim…

    JavaScript 2023年6月11日
    00
  • JS模拟实现ECMAScript5新增的数组方法

    下面是JS模拟实现ECMAScript5新增的数组方法的完整攻略。 一、ECMAScript5新增的数组方法 ECMAScript5新增了一些数组方法,这些方法主要是用于对数组进行操作和 manipulation。常见的 ECMAScript5 数组方法包括以下几个: forEach():对数组中的每个元素都执行一次提供的函数。 map():返回一个由原数组…

    JavaScript 2023年5月27日
    00
  • JavaScript的ExtJS框架中表格的编写教程

    下面是JavaScript的ExtJS框架中表格的编写教程的完整攻略。 1. 概述 JavaScript的ExtJS框架提供了丰富的表格组件,能够满足各种需求。本攻略将详细介绍如何在ExtJS中编写表格组件。 2. 表格的基本结构 表格组件由表头和表格数据两部分组成。表头定义表格列的名称和宽度,表格数据为表格中实际展示的数据。 3. 表头的编写 表头的编写需…

    JavaScript 2023年6月10日
    00
  • JavaScript中计时器requestAnimationFrame、setTimeout、setInterval、setImmediate的使用和区别

    在JavaScript中,我们经常使用requestAnimationFrame、setTimeout、setInterval和setImmediate来控制代码的执行时机。它们各有特点和适用场景: 1. requestAnimationFrame: requestAnimationFrame主要用于浏览器动画渲染。这个函数允许你在下一次浏览器重绘前调用一个…

    JavaScript 2023年4月18日
    00
  • HTML DOM setInterval和clearInterval方法案例详解

    下面我将详细讲解“HTML DOM setInterval和clearInterval方法案例详解”的完整攻略。 1. 回顾setInterval和clearInterval的概念 在深入讲解之前,我们需要先了解setInterval和clearInterval两个函数的基本概念。 setInterval:可以重复执行一个函数或一段代码,在规定的时间间隔内不…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部