当前位置:首页 > JavaScript

js实现表格合并

2026-04-07 08:46:02JavaScript

实现表格合并的方法

使用原生JavaScript合并单元格

通过操作DOM元素的rowSpancolSpan属性实现单元格合并:

function mergeCells(tableId, startRow, endRow, col) {
  const table = document.getElementById(tableId);
  for (let i = startRow; i < endRow; i++) {
    const cell = table.rows[i].cells[col];
    if (cell) {
      cell.style.display = 'none';
      table.rows[startRow].cells[col].rowSpan += 1;
    }
  }
}

使用jQuery合并单元格

jQuery简化了DOM操作,可以更简洁地实现合并:

js实现表格合并

function mergeTableCells(tableSelector) {
  $(tableSelector + ' td').each(function() {
    const td = $(this);
    if (td.text() === td.next().text() && td.index() === td.next().index()) {
      td.attr('colspan', 2);
      td.next().remove();
    }
  });
}

动态表格合并方案

对于动态生成的表格,需要先处理数据再渲染:

js实现表格合并

function processTableData(data) {
  return data.reduce((acc, row) => {
    const lastRow = acc[acc.length - 1];
    if (lastRow && row.key === lastRow.key) {
      lastRow.span = (lastRow.span || 1) + 1;
    } else {
      acc.push({...row});
    }
    return acc;
  }, []);
}

响应式表格合并技巧

结合CSS实现响应式表格合并效果:

.merged-cell {
  grid-column: span 2;
  text-align: center;
}
function responsiveMerge(tableId) {
  const table = document.getElementById(tableId);
  const rows = table.querySelectorAll('tr');
  rows.forEach(row => {
    const cells = row.querySelectorAll('td');
    cells.forEach((cell, index) => {
      if (cell.textContent === cells[index + 1]?.textContent) {
        cell.classList.add('merged-cell');
        cells[index + 1].style.display = 'none';
      }
    });
  });
}

复杂表头合并方案

对于多级表头的复杂表格合并:

function mergeComplexHeader(tableId) {
  const table = document.getElementById(tableId);
  const headerRows = table.querySelectorAll('thead tr');

  headerRows.forEach((row, rowIndex) => {
    const cells = row.querySelectorAll('th');
    let spanCount = 1;

    cells.forEach((cell, cellIndex) => {
      const nextCell = cells[cellIndex + 1];
      if (nextCell && cell.textContent === nextCell.textContent) {
        spanCount++;
        nextCell.style.display = 'none';
      } else {
        if (spanCount > 1) {
          cell.colSpan = spanCount;
          spanCount = 1;
        }
      }
    });
  });
}

注意事项

  1. 合并前确保表格结构规整,行列数一致
  2. 合并操作应在DOM加载完成后执行
  3. 动态数据表格需要在数据更新后重新执行合并
  4. 合并后需要调整样式保证视觉一致性
  5. 考虑添加合并/取消合并的交互功能

以上方法可以根据具体需求组合使用,实现不同复杂度的表格合并需求。

标签: 表格js
分享给朋友:

相关文章

css 制作表格

css 制作表格

基础表格结构 使用HTML的<table>标签创建表格框架,搭配<tr>(行)、<th>(表头)和<td>(单元格)标签。例如: <table&…

vue表格实现单选框

vue表格实现单选框

Vue 表格实现单选框的方法 在 Vue 中实现表格单选框功能,可以通过结合 el-table(Element UI)或原生表格与 Vue 的数据绑定特性完成。以下是几种常见实现方式: 使用 Ele…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

vue element实现表格

vue element实现表格

Vue + Element UI 实现表格 Element UI 提供了强大的表格组件 el-table,结合 Vue 可以快速实现数据展示、排序、筛选等功能。 基础表格实现 安装 Element…

css表格制作

css表格制作

CSS表格制作方法 使用CSS创建表格可以通过多种方式实现,以下是常见的几种方法: 使用HTML原生表格标签结合CSS样式 <table class="styled-table">…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…