当前位置:首页 > JavaScript

js实现表

2026-02-02 04:31:12JavaScript

以下是几种常见的 JavaScript 表格实现方法:

动态生成表格

使用 DOM 操作动态创建表格结构:

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

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

// 创建表格内容
const tbody = table.createTBody();
const data = [
  {name: '张三', age: 25, city: '北京'},
  {name: '李四', age: 30, city: '上海'}
];

data.forEach(item => {
  const row = tbody.insertRow();
  Object.values(item).forEach(value => {
    const cell = row.insertCell();
    cell.textContent = value;
  });
});

// 将表格添加到页面
document.body.appendChild(table);

使用模板字符串

通过字符串拼接生成表格 HTML:

const data = [
  {id: 1, product: '手机', price: 3999},
  {id: 2, product: '笔记本', price: 5999}
];

let html = `
  <table border="1">
    <thead>
      <tr>
        <th>ID</th>
        <th>商品</th>
        <th>价格</th>
      </tr>
    </thead>
    <tbody>
      ${data.map(item => `
        <tr>
          <td>${item.id}</td>
          <td>${item.product}</td>
          <td>${item.price}</td>
        </tr>
      `).join('')}
    </tbody>
  </table>
`;

document.body.innerHTML = html;

使用框架(React 示例)

在 React 中创建表格组件:

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>
  );
}

// 使用示例
const products = [
  {id: 1, name: '键盘', stock: 50},
  {id: 2, name: '鼠标', stock: 100}
];

ReactDOM.render(
  <DataTable data={products} />,
  document.getElementById('root')
);

表格排序功能

为表格添加点击排序功能:

function sortTable(table, column, asc = true) {
  const tbody = table.tBodies[0];
  const rows = Array.from(tbody.querySelectorAll('tr'));

  rows.sort((a, b) => {
    const aVal = a.cells[column].textContent;
    const bVal = b.cells[column].textContent;
    return asc ? aVal.localeCompare(bVal) : bVal.localeCompare(aVal);
  });

  while (tbody.firstChild) {
    tbody.removeChild(tbody.firstChild);
  }

  tbody.append(...rows);
}

// 使用示例
document.querySelectorAll('th').forEach(th => {
  th.addEventListener('click', () => {
    const table = th.closest('table');
    const headerIndex = Array.from(th.parentNode.children).indexOf(th);
    sortTable(table, headerIndex);
  });
});

响应式表格

使用 CSS 和 JavaScript 实现响应式表格:

js实现表

function makeTableResponsive(table) {
  const headers = Array.from(table.querySelectorAll('th')).map(th => th.textContent);
  const rows = table.querySelectorAll('tbody tr');

  rows.forEach(row => {
    const cells = row.querySelectorAll('td');
    cells.forEach((cell, i) => {
      cell.setAttribute('data-label', headers[i]);
    });
  });
}

// 调用函数
const tables = document.querySelectorAll('table');
tables.forEach(makeTableResponsive);

这些方法涵盖了从基础到进阶的表格实现方式,可以根据具体需求选择合适的实现方案。

标签: js
分享给朋友:

相关文章

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…