karma(无为),8988(晓月),或知道的人请进:Table单元格合并出现奇怪的问题!!!
function doTab(x1,x2,y1,y2){
if (x1==x2 && y1==y2) return;
htmlstr="";
xspan=0;
yspan=0;
for (i=x1;i<=x2;i++) xspan+=tab1.rows[y1].cells[i].colSpan;
for (i=y1;i<=y2;i++) yspan+=tab1.rows[i].cells[x1].rowSpan;
for (i=y1;i<=y2;i++) {
htmlstr+="<br>";
for(j=x1;j<=x2;j++){
htmlstr+=tab1.rows[i].cells[j].innerHTML;
}
}
htmlstr=htmlstr.substr(4);
for (i=y1;i<=y2;i++){
j=x1;
while (j<x2){
tab1.rows[i].deleteCell(x1);
j++;
}
tab1.rows[i].cells[x1].colSpan=xspan;
}
for (i=y2;i>y1;i--){
tab1.rows[i].deleteCell(x1);
}
tab1.rows[y1].cells[x1].rowSpan=yspan;
tab1.rows[y1].cells[x1].innerHTML=htmlstr;
//alert(htmlstr);
}
我使用了8988提供的合并代码,但是发现Table单元格合并出现了很奇怪的现象。
比如:
doTab(col1,col2,row1,row2);
我通常只对列的数据进行合并。
比如我做了以下动作:
doTab(1,1,1,5);//第一列
doTab(2,2,2,4);//第二列
doTab(2,2,3,7);//第二列
doTab(3,3,1,3);//第三列
除了第一个合并位置是正确的,其余接下来的合并的位置全是错位的。我打印了每一行的列数,发现合并一次以后,每一行的列数的都会发生变化,而且都不一定相同,不再是原来的的表格列数目,造成合并的单元格都错位到其他列上。
这个问题如何解决呢??我不可能仅合并表格中的一列,肯定是要对多个列进行合并阿!