http://www.oschina.net/code/snippet_219817_7949
代码] [JavaScript]代码
01 | // tb:要合并单元格的表格;stacol:开始合并列;endcol:结束合并列;bool:合并方式(true代表stacol与endcol之间合并; false代表两边和并);num标记列(防止某些信息因为内容相同而合并。eg,姓名相同而编号不同的两个人) |
02 | function uniteTable(tb,stacol,endcol,bool,num) |
03 | { var end; |
04 | var i=0; |
05 | var j=0; |
06 | var rowCount=tb.rows.length; // 行数 |
07 | var colCount=tb.rows[0].cells.length; // 列数 |
08 | var obj1= null ; |
09 | var obj2= null ; |
10 | var n=5; |
11 | var count= new Array(); |
12 | for (i=0;i<rowCount;i++){ |
13 | for (j=0;j<colCount;j++){ |
14 | tb.rows[i].cells[j].id= "tb__" + i+ "_" +j; |
15 | } |
16 | } |
17 | //合并标记列,防止某些信息因为内容相同而合并(不需要时,可以不用传值) |
18 | if ( typeof (num)!= 'undefined' ){ |
19 | obj1=document.getElementById( "tb__0_" +(num-1).toString()); |
20 | for ( var t=1;t<rowCount;t++){ |
21 | obj2=document.getElementById( "tb__" +t.toString()+ "_" +(num-1).toString()); |
22 | if (obj1.innerHTML==obj2.innerHTML){ |
23 | obj1.rowSpan++; |
24 | obj2.parentNode.removeChild(obj2); |
25 | } else { |
26 | count[t]=n; //当第一个人的名称合并结束时,给count[t]赋值做标记 |
27 | obj1=document.getElementById( "tb__" +t.toString()+ "_" +(num-1).toString()); } |
28 | } |
29 | |
30 | } |
31 | //如果endcol未定义,代码将最终一列定义为endcol |
32 | // if(typeof(endcol)=='undefined'){end=colCount;}else{end=endcol} |
33 | for (i=0;i<colCount;i++){ |
34 | //bool:合并方式,true代表两边合并;false代表中间合并 |
35 | if (bool){ if (i+1<stacol||i+1>endcol){ continue ;}} |
36 | else { if (i+1>stacol&&i+1<endcol){ continue ;} } |
37 | obj1=document.getElementById( "tb__0_" +i.toString()); |
38 | for (j=1;j<rowCount;j++){ |
39 | obj2=document.getElementById( "tb__" +j.toString()+ "_" +i.toString()); |
40 | if ( typeof (count[j])!= 'undefined' ){ |
41 | if (count[j]!=n){ |
42 | if (obj1.innerHtml==obj2.innerHtml){ obj1.rowSpan++; |
43 | obj2.parentNode.removeChild(obj2); } |
44 | else { obj1=document.getElementById( "tb__" +j.toString()+ "_" +i.toString()); } |
45 | } else { obj1=document.getElementById( "tb__" +j.toString()+ "_" +i.toString()); } |
46 | } |
47 | else { if (obj1.innerHTML==obj2.innerHTML){ |
48 | obj1.rowSpan++; |
49 | obj2.parentNode.removeChild(obj2); |
50 | } |
51 | else { obj1=document.getElementById( "tb__" +j.toString()+ "_" +i.toString()); } |
52 | } |
53 | } |
54 | } |
55 | |