JS
body里面录入一个table
运行效果
然后我们写一个合并单元格的代码
做一个测试调用,调用的时候,列数必须是从大到小
这样就能合并了,但是我们发现一个问题,合并的没有分项目,应该是一个项目内的合并
HTML继续加一个隐藏的项目ID
核心代码稍微改一下,意思就是:项目ID+名字是一样的才合并
再看一下,合并就对了
JS核心代码: /** * 合并单元格(如果结束行传0代表合并所有行) * @param table1 表格的ID * @param startRow 起始行 * @param endRow 结束行 * @param col 合并的列号,对第几列进行合并(从0开始)。第一行从0开始 */ function mergeCell(table1, startRow, endRow, col) { var tb = document.getElementById(table1); if (!tb || !tb.rows || tb.rows.length <= 0) { return; } if (col >= tb.rows[0].cells.length || (startRow >= endRow && endRow != 0)) { return; } if (endRow == 0) { endRow = tb.rows.length - 1; } for (var i = startRow; i < endRow; i++) { var r1 = tb.rows[startRow].cells[0].innerHTML; var r2 = tb.rows[i + 1].cells[0].innerHTML; if (r1 + tb.rows[startRow].cells[col].innerHTML == r2 + tb.rows[i + 1].cells[col].innerHTML) { tb.rows[i + 1].removeChild(tb.rows[i + 1].cells[col]); tb.rows[startRow].cells[col].rowSpan = (tb.rows[startRow].cells[col].rowSpan) + 1; } else { mergeCell(table1, i + 1, endRow, col); break; } } }