当前位置:首页 > JavaScript

js实现表格合并

2026-02-02 15:09:50JavaScript

实现表格合并的方法

在JavaScript中实现表格合并通常涉及操作DOM元素,合并相邻的相同单元格。以下是几种常见的方法:

使用原生JavaScript合并行

通过遍历表格的行和列,检查相邻单元格内容是否相同,若相同则进行合并。

js实现表格合并

function mergeCells(tableId, columnIndex) {
    const table = document.getElementById(tableId);
    let previousText = '';
    let startRow = 0;

    for (let i = 0; i < table.rows.length; i++) {
        const currentText = table.rows[i].cells[columnIndex].innerText;
        if (currentText === previousText) {
            table.rows[i].deleteCell(columnIndex);
            table.rows[startRow].cells[columnIndex].rowSpan++;
        } else {
            previousText = currentText;
            startRow = i;
        }
    }
}

使用jQuery简化操作

如果项目中已引入jQuery,可以更简洁地实现合并功能。

js实现表格合并

function mergeCells(tableId, columnIndex) {
    $(`#${tableId} tr`).each(function() {
        const currentText = $(this).find('td').eq(columnIndex).text();
        if (currentText === $(this).prev().find('td').eq(columnIndex).text()) {
            $(this).find('td').eq(columnIndex).remove();
            $(this).prev().find('td').eq(columnIndex).attr('rowspan', 
                parseInt($(this).prev().find('td').eq(columnIndex).attr('rowspan') || 1) + 1);
        }
    });
}

合并列的实现

合并列的逻辑与合并行类似,但需要横向遍历单元格。

function mergeColumns(tableId, rowIndex) {
    const table = document.getElementById(tableId);
    let previousText = '';
    let startCol = 0;

    for (let i = 0; i < table.rows[rowIndex].cells.length; i++) {
        const currentText = table.rows[rowIndex].cells[i].innerText;
        if (currentText === previousText) {
            table.rows[rowIndex].cells[i].remove();
            table.rows[rowIndex].cells[startCol].colSpan++;
        } else {
            previousText = currentText;
            startCol = i;
        }
    }
}

动态表格的合并处理

对于动态生成的表格,可以在数据渲染完成后调用合并函数。

function renderTable(data) {
    const table = document.getElementById('dynamic-table');
    data.forEach(item => {
        const row = table.insertRow();
        row.insertCell().textContent = item.name;
        row.insertCell().textContent = item.category;
    });
    mergeCells('dynamic-table', 1); // 合并第二列
}

注意事项

  • 合并操作会修改DOM结构,可能影响后续的单元格索引。
  • 合并后的单元格需通过rowSpancolSpan属性正确设置跨行/列数。
  • 对于复杂表格,建议先备份原始数据以便恢复。

以上方法可根据实际需求调整,适用于大多数表格合并场景。

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

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue实现动态用户表格

vue实现动态用户表格

Vue 动态用户表格实现方法 基础表格结构 使用<table>或第三方组件库(如Element UI的el-table)构建基础框架。静态数据示例: <template>…

js类实现

js类实现

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…