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日

相关文章

  • 19个很有用的 JavaScript库推荐

    19个很有用的 JavaScript库推荐攻略 JavaScript 库的使用在现代 Web 开发中变得越来越重要,它们能够大大地提高开发效率。在这篇文章中,我们将介绍 19 个很有用的 JavaScript 库,通过这篇攻略,你将学习到这些库的使用方法及其在项目中的应用。 1. jQuery jQuery 是一个轻量级的 JavaScript 库,它简化了…

    JavaScript 2023年5月18日
    00
  • Intellij IDEA常用快捷键介绍 Intellij IDEA快捷键大全汇总

    Intellij IDEA常用快捷键介绍 Intellij IDEA是一款非常得人心的开发工具,使用过程中,通过一些快捷键可以让我们更加高效地进行开发。本文将为大家介绍Intellij IDEA常用快捷键,并进行一些相应的示例说明。 常用快捷键汇总 下面介绍一些Intellij IDEA常用快捷键:- Ctrl + Shift + N:快速打开文件- Ctr…

    JavaScript 2023年6月11日
    00
  • JS简单添加元素新节点的方法示例

    下面我来详细讲解“JS简单添加元素新节点的方法示例”的完整攻略。 什么是添加新节点? 在 JavaScript 中,向 HTML 文档中添加节点(节点就是 HTML 元素)的过程称为添加新节点。 添加新节点的方法 使用 JavaScript 可以轻松地添加新节点到 HTML 页面中。下面我们来看看两个添加新节点的示例方法。 方法一:appendChild()…

    JavaScript 2023年6月10日
    00
  • 微信小程序 教程之事件

    以下是关于“微信小程序教程之事件”的详细攻略: 什么是小程序事件 微信小程序中,我们可以使用事件来监听用户的操作,并根据用户操作来触发我们程序中的相应的行为。小程序中常见的一些事件如下: touchstart、touchmove、touchend:触摸事件,可以监听用户触摸屏幕的动作; tap、longpress、longtap:点击事件,可以监听用户单击、…

    JavaScript 2023年6月11日
    00
  • JS中‘hello’与new String(‘hello’)引出的问题详解

    当我们在JS中定义一个字符串时,我们可以使用字符串字面量 (string literal) 或者使用 String 对象 (String object)。 例如: let strLiteral = ‘hello’; let strObject = new String(‘hello’); 从上面的代码中可以看出,两种方式都可以定义一个字符串并将其赋值给变量。…

    JavaScript 2023年5月28日
    00
  • JavaScript格式化日期时间的方法和自定义格式化函数示例

    JavaScript格式化日期时间的方法和自定义格式化函数示例 在JavaScript中,格式化日期时间是一个常见的需求。本文将介绍在JavaScript中格式化日期时间的方法和自定义格式化函数示例。 提供内置的日期时间格式化方法 在JavaScript中,可以使用Date对象提供的内置方法来格式化日期时间。以下是一些常见的方法及其描述: getFullYe…

    JavaScript 2023年5月27日
    00
  • javascript 防止刷新,后退,关闭

    防止刷新、后退和关闭网页通常可以使用 JavaScript 实现。以下是标准的 Markdown 格式文本回答。 防止刷新、后退和关闭网页的方法 防止刷新网页 要防止刷新网页,最简单的方法是使用 beforeunload 事件。在页面加载时,添加以下代码: window.addEventListener(‘beforeunload’, function(ev…

    JavaScript 2023年6月11日
    00
  • 一定有你会用到的JavaScript一行代码实用技巧总结

    让我来详细讲解一下“一定有你会用到的JavaScript一行代码实用技巧总结”的攻略。 一、背景介绍 在日常的前端开发工作中,我们经常会使用到JavaScript来完成各种有趣的功能和效果。本篇攻略将分享一些JS中常用但并不容易想到的一行代码实用技巧,帮助各位同学提高编码效率和提升开发经验。 二、实用技巧总结 1. 数组去重 经常会遇到需要将一组数据中的重复…

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