// table的id 需要合并的列(从0开始算)
mergeCell(tableId, cols) {
const table = document.getElementById(tableId);
if (!table)return
const table_rows = table.rows;
// 需要合并的列的数组
cols.forEach((v, k) => {
// 循环table每一行
for (let i = 0; i < table_rows.length - 1; i++) {
// row
let now_row = table_rows[i];
let next_row = table_rows[i + 1];
// col
let now_col = now_row.cells[v];
let next_col = next_row.cells[v];
if (now_col.innerHTML == next_col.innerHTML) {
// 标记为需要删除
next_col.classList.add('remove');
// 递归判断当前对象时候已经被删除
this.setParentSpan(table, i, v);
}
}
})
let removeTds = document.getElementsByClassName('remove');
for (let i = removeTds.length-1; i >= 0; i--) {
let eldTd = removeTds[i];
eldTd.parentNode.removeChild(eldTd);
}
}
setParentSpan(table, row, col) {
const col_item = table.rows[row].cells[col];
if (col_item.classList.contains('remove')) {
this.setParentSpan(table, --row, col)
} else {
col_item.rowSpan += 1;
}
}
// 使用,合并id为table1的第一列数据,相同的合并
mergeCell("table1", [0])
运行效果: