分享

通过javascript实现html中table单元格的合并

 quasiceo 2015-01-16

 

代码
1 /*
2 vMergeCell :纵向(垂直方向,vertical)合并(Merge)Table单元格(Cell)
3 参数1 TableID :要操作的table的id;
4 参数2 ColList :要纵向合并的列IndexID的列表(例如:"0,1");
5 注意事项:
6 1.要操作的table须要有id,且不能与其它页面元素的ID向相同;
7 2.依据ColList第一个值合并,调整见42行注释
8
9 3.该函数强烈建议在window.onload()的调用
10 调用: vMergeCell("table01","0,1")
11 Yuanzy @2005-5-31 20:57
12
*/
13 function vMergeCell(TableID,ColList)
14 {
15 var ColArray = ColList.split(",");
16 var tTable = document.getElementById(TableID);//document.all[TableID];
17 var TableRowCnts=tTable.rows.length;
18 var tmpA;
19 var tmpB;
20 var PerTxt = "";
21 var CurTxt = "";
22 var alertStr = "";
23 //for (j=0;j<=ColArray.length-1 ;j++ )
24 //遍历 要合并的列 ,并取得 其文本
25 //由于cell的indexID的排序由前至后(有左至右),为了不致影响,合并顺序为有后至前(倒序循环)
26 for (j=ColArray.length-1;j>=0 ;j-- )
27 {
28 //当循环至某新的列时,变量复位。
29 PerTxt="";
30 tmpA=1;
31 tmpB=0;
32
33 //从第一行(表头为第0行)开始循环,循环至行尾(溢出一位)
34 for (i=1;i<=TableRowCnts ;i++ )
35 {
36 if (i==TableRowCnts)
37 {
38 CurTxt="";
39 }
40 else
41 {
42 //可以尝试将cells[0]中的0改成i,看看效果
43 CurTxt=tTable.rows[i].cells[0].innerHTML;
44 }
45 if (PerTxt==CurTxt)
46 {
47 tmpA+=1;
48 }
49 else
50 {
51 tmpB+=tmpA;
52 tTable.rows[i-tmpA].cells[ColArray[j]].rowSpan = tmpA;
53 for (a=i-tmpA+1;a<tmpB ;a++ )
54 {
55 tTable.rows[a].deleteCell(ColArray[j]);
56 }
57 tmpA=1;
58 }
59 PerTxt=CurTxt;
60 }
61 }
62 }
63

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多