Вы можете использовать Table.js , автономную библиотеку JavaScript, которую я написал для работы со сложными таблицами. Вы можете использовать что-то вроде этого:
var mytable = new Table(document.getElementById('mytable')),
cell1 = document.getElementById('cell1'),
cell2 = document.getElementById('cell2');
mytable.merge([cell1, cell2], function(colspan, rowspan, newcell, oldcell){
// colspan is the future value of the "colSpan" attribute of newcell
// rowspan is the future value of the "rowSpan" attribute of newcell
// newcell is the cell that is kept
// oldcell is the cell that will be removed
// Do what you want here
});
Первый аргумент функции - это Array
из HTMLTableCellElement
(<TD>
или <TH>
элементов) или NodeList
. Второй аргумент является необязательным и является обратным вызовом, который вызывается всякий раз, когда две ячейки объединяются.
По умолчанию Table.js ограничен 50 слияниями при вызове <TableObject>.merge()
. Вы можете изменить это с помощью
window.Table.maxIteration = 100;
Вы также можете использовать аналогичные функции <TableObject>.mergeHorizontal(cells, callback)
и <TableObject>.mergeVertical(cells, callback)
.