天天看點

rowspan 動态變化_使用colspan和rowspan動态删除html表中的多個列

好的,您的代碼中的一個問題是,您删除了目前正在使用for進行疊代的單元格。我改變了你的第一個循環來完成所有反向:for (var i = (rows[0].cells.length -1); i >= 0; i--),從後到前...是以沒有索引在删除時發生變化。

第二個問題是你的内部for循環。使用第一個for循環疊代3列并在内循環中假設每行具有相同數量的cols,但事實并非如此。我更改了代碼,如果單元格的colspan大于1,則減少colspan,否則删除單元格。

完整的已更新代碼為:

var countColumns = function(table) {

if (!table || !table.tagName || table.tagName != 'TABLE') { throw new Error("The parameter 'table' must be a

var maxColumnsCount = 0;

for (var i = 0; i < table.rows.length; i++) {

maxColumnsCount = Math.max(table.rows[i].cells.length, maxColumnsCount);

}

return maxColumnsCount;

};

var table = document.getElementById('Just_for_california');

var rows = table.rows;

for (var i = (countColumns(table) -1); i >= 0; i--)

{

var str = '';

var cellToDelete = [];

if (rows[0].cells[i] != undefined) {

str = rows[0].cells[i].innerHTML;

cellToDelete.push(i);

} else if (rows[0].cells[i -1].colSpan > 1) {

str = rows[0].cells[i -1].innerHTML;

cellToDelete.push(i -1);

cellToDelete.push(i);

}

if (str.search("") != -1) {

for (var j = 0; j < rows.length; j++)

{

for (var k = 0; k < cellToDelete.length; k++) {

if (rows[j].cells[cellToDelete[k]] != undefined) {

if (rows[j].cells[cellToDelete[k]].colSpan > 1) {

rows[j].cells[cellToDelete[k]].colSpan -= 1;

} else {

rows[j].deleteCell(cellToDelete[k]);

}

}

}

}

}

}