当前位置:首页 > 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
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…