当前位置:首页 > JavaScript

js实现table

2026-03-13 18:32:30JavaScript

JavaScript 实现动态表格

使用 JavaScript 动态创建和操作表格可以通过 DOM 操作实现。以下是几种常见场景的实现方法。

创建基础表格结构

通过 document.createElement 构建表格元素并插入到页面中:

// 创建 table 元素
const table = document.createElement('table');
table.border = '1';

// 创建表头
const thead = document.createElement('thead');
const headerRow = document.createElement('tr');
['姓名', '年龄', '城市'].forEach(text => {
  const th = document.createElement('th');
  th.textContent = text;
  headerRow.appendChild(th);
});
thead.appendChild(headerRow);

// 创建表格内容
const tbody = document.createElement('tbody');
const data = [
  ['张三', 25, '北京'],
  ['李四', 30, '上海']
];
data.forEach(rowData => {
  const tr = document.createElement('tr');
  rowData.forEach(cellData => {
    const td = document.createElement('td');
    td.textContent = cellData;
    tr.appendChild(td);
  });
  tbody.appendChild(tr);
});

// 组装表格
table.appendChild(thead);
table.appendChild(tbody);
document.body.appendChild(table);

动态添加行

为已有表格追加新行数据:

function addTableRow(tableId, rowData) {
  const tbody = document.querySelector(`#${tableId} tbody`);
  const tr = document.createElement('tr');
  rowData.forEach(cellData => {
    const td = document.createElement('td');
    td.textContent = cellData;
    tr.appendChild(td);
  });
  tbody.appendChild(tr);
}

// 使用示例
addTableRow('myTable', ['王五', 28, '广州']);

响应式表格排序

实现点击表头排序功能:

function setupTableSort(tableId) {
  const table = document.getElementById(tableId);
  const headers = table.querySelectorAll('th');

  headers.forEach((header, index) => {
    header.style.cursor = 'pointer';
    header.addEventListener('click', () => {
      const tbody = table.querySelector('tbody');
      const rows = Array.from(tbody.querySelectorAll('tr'));

      rows.sort((a, b) => {
        const aText = a.cells[index].textContent;
        const bText = b.cells[index].textContent;
        return isNaN(aText) ? aText.localeCompare(bText) : aText - bText;
      });

      // 清空并重新插入排序后的行
      tbody.innerHTML = '';
      rows.forEach(row => tbody.appendChild(row));
    });
  });
}

使用模板字符串生成

对于简单表格可以使用模板字符串快速生成:

const data = [
  { name: '张三', age: 25, city: '北京' },
  { name: '李四', age: 30, city: '上海' }
];

function generateTable(data) {
  return `
    <table border="1">
      <thead>
        <tr>
          ${Object.keys(data[0]).map(key => `<th>${key}</th>`).join('')}
        </tr>
      </thead>
      <tbody>
        ${data.map(row => `
          <tr>
            ${Object.values(row).map(val => `<td>${val}</td>`).join('')}
          </tr>
        `).join('')}
      </tbody>
    </table>
  `;
}

document.body.innerHTML = generateTable(data);

使用现代框架示例(React)

在 React 中创建表格组件:

js实现table

function DataTable({ data }) {
  return (
    <table>
      <thead>
        <tr>
          {Object.keys(data[0]).map(key => (
            <th key={key}>{key}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {data.map((row, i) => (
          <tr key={i}>
            {Object.values(row).map((val, j) => (
              <td key={j}>{val}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
}

注意事项

  • 动态创建的表格需要合理设置 bordercellpadding 等属性保证显示效果
  • 大数据量表格建议使用虚拟滚动技术优化性能
  • 考虑添加斑马纹样式(交替行颜色)提升可读性
  • 复杂的交互功能(如编辑、筛选)建议使用现成的表格库如 DataTables、ag-Grid 等

标签: jstable
分享给朋友:

相关文章

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…