是的,代码的一个问题是删除了当前使用for重复的tzdmht。 我改变了你的第一个循环完成了所有翻转: for (vari=(rows [0].cells.length-1 ); i=0; i-- ),从后向前.因此删除时没有变化的索引。
第二个问题是你的内部for循环。 使用第一个for循环重复三列,而内部循环假设每行有相同数量的cols,但情况并非如此。 我更改了代码。 如果tzdmht的colspan大于1,则减少colspan,否则删除tzdmht。
更新后的完整代码如下。
varcountcolumns=function{
if (! table ||! table.tagName || table.tagName!='table'(thrownewerror ) ) theparameter'table'mustbea
var maxColumnsCount=0;
for(varI=0; i table.rows.length; I ) {
maxcolumnscount=math.max (table.rows [ I ].cells.length,maxcolumnscount );
}
返回矩阵计数;
(;
vartable=document.getelementbyid (just _ for _ California );
var rows=table.rows;
for(varI=)计数列(table )-1 ); i=0; I----)
{
var str=' ';
var cellToDelete=[];
if(Rows[0].cells[I]!=未定义) {
str=rows[0].cells[i].innerHTML;
cllltodelete.push(I;
} else if (rows [0].cells [ I-1 ].colspan1) {
str=rows [0].cells [ I-1 ].innerhtml;
cllltodelete.push(I-1;
cllltodelete.push(I;
}
if(str.search (' )!=-1 ()
for(varj=0; j rows.length; j )
{
for(vark=0; k cellToDelete.length; k ) {
if (rows [ j ].cells [ celltodelete [ k ]!=未定义) {
if (rows [ j ].cells [ celltodelete [ k ].colspan1) {
rows [ j ].cells [ celltodelete [ k ].colspan--=1;
} else {
rows [ j ].delete cell (celltodelete [ k ];
}
}
}
}
}
}