JS自动合并表格

js合并单元格.html

Html代码   收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>JS合并表格</title>  
  6. <style>  
  7. * {  
  8.     font-size:12px  
  9. }  
  10.   
  11. table{ margin-top:5px;}  
  12.   
  13. .table1 {  
  14.     border-collapse:collapse;  
  15.     width:600px;  
  16.     border:1px solid #7A90A8;  
  17.     border-top:3px;  
  18. }  
  19. td {  
  20. padding-left:3px;  
  21. text-align:left;  
  22. }  
  23.   
  24. caption{  
  25. background:#9DACBF;  
  26. font-weight:600;  
  27. padding:4px;  
  28. color:#FFF; }  
  29. </style>  
  30. </head>  
  31.   
  32. <body>  
  33.   
  34. <table id="ii" class="table1" border="1" align="center">  
  35. <caption>2010年北京市医院分布情况</caption>  
  36.   <tr>  
  37.     <td>所在区</td>  
  38.     <td>二级医院数量</td>  
  39.     <td>三级医院数量</td>  
  40.     <td>三甲级医院数量</td>  
  41.     <td>四级医院数量</td>  
  42.   </tr>  
  43.   <tr>  
  44.     <td>海淀区</td>  
  45.     <td>8</td>  
  46.     <td>54</td>  
  47.     <td>14</td>  
  48.     <td>8</td>  
  49.   </tr>  
  50.   <tr>  
  51.     <td>海淀区</td>  
  52.     <td>15</td>  
  53.     <td>64</td>  
  54.     <td>36</td>  
  55.     <td>76</td>  
  56.   </tr>  
  57.   <tr>  
  58.     <td>朝阳区</td>  
  59.     <td>5</td>  
  60.     <td>64</td>  
  61.     <td>69</td>  
  62.     <td>23</td>  
  63.   </tr>  
  64.   <tr>  
  65.     <td>朝阳区</td>  
  66.     <td>17</td>  
  67.     <td>54</td>  
  68.     <td>43</td>  
  69.     <td>18</td>  
  70.   </tr>  
  71.   <tr>  
  72.     <td>朝阳区</td>  
  73.     <td>73</td>  
  74.     <td>35</td>  
  75.     <td>45</td>  
  76.     <td>72</td>  
  77.   </tr>  
  78. </table>  
  79.   
  80.   
  81.   
  82. <script type="text/javascript">  
  83. function tableSpan(tb1)  
  84. {  
  85.     //合并行  
  86.     //列  
  87.     for(var i=tb1.rows[0].childNodes.length-1;i>=0;i--)  
  88.     {  
  89.         //行  
  90.         for(var j=tb1.rows.length-1;j>0;j--)  
  91.         {  
  92.             //当前单元格与上一单元格比较  
  93.             if(tb1.rows[j].childNodes[i].innerHTML==tb1.rows[j-1].childNodes[i].innerHTML)  
  94.             {  
  95.                 tb1.rows[j-1].childNodes[i].rowSpan += tb1.rows[j].childNodes[i].rowSpan;  
  96.                 tb1.rows[j].removeChild(tb1.rows[j].childNodes[i]);  
  97.             }  
  98.         }  
  99.     }  
  100.       
  101.     //合并列  
  102.     //行  
  103.     for(var i=tb1.rows.length-1;i>=0;i--)  
  104.     {   break;//不合并列  
  105.         //列  
  106.         for(var j=tb1.rows[i].childNodes.length-1;j>0;j--)  
  107.         {  
  108.             //当前单元格与左一单元格比较  
  109.             if(tb1.rows[i].childNodes[j].innerHTML==tb1.rows[i].childNodes[j-1].innerHTML)  
  110.             {  
  111.                 tb1.rows[i].childNodes[j-1].colSpan += tb1.rows[i].childNodes[j].colSpan;  
  112.                 tb1.rows[i].removeChild(tb1.rows[i].childNodes[j]);  
  113.             }  
  114.         }  
  115.     }  
  116. }  
  117. tableSpan(ii);  
  118. </script>  
  119. </body>  
  120. </html>  

 

合并效果,将所在区相邻且字符同的都合并了

 

2010年北京市医院分布情况

所在区二级医院数量三级医院数量三甲级医院数量四级医院数量
海淀区854148
15643676
朝阳区56923
17544318
733545

72

 

 

 

 

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>无标题文档 </title> 

</head> 

 

<body> 

<table width="100%" border="1" cellspacing="0" cellpadding="0" id="tab"> 

  <tr> 

    <td>张三 </td> 

    <td>男 </td> 

    <td>22 </td> 

    <td>数学 </td> 

    <td>90 </td> 

  </tr> 

   <tr> 

    <td>张三 </td> 

    <td>男 </td> 

    <td>22 </td> 

    <td>数学 </td> 

    <td>90 </td> 

  </tr> 

  <tr> 

    <td>张三 </td> 

    <td>男 </td> 

    <td>22 </td> 

    <td>语文 </td> 

    <td>70 </td> 

  </tr> 

  <tr> 

    <td>张三 </td> 

    <td>女 </td> 

    <td>22 </td> 

    <td>英语 </td> 

    <td>60 </td> 

  </tr> 

  <tr> 

    <td>李四 </td> 

    <td>女 </td> 

    <td>22 </td> 

    <td>数学 </td> 

    <td>60 </td> 

  </tr> 

  <tr> 

    <td>李四 </td> 

    <td>女 </td> 

    <td>19 </td> 

    <td>语文 </td> 

    <td>60 </td> 

  </tr> 

  <tr> 

    <td>王五 </td> 

    <td>男 </td> 

    <td>19 </td> 

    <td>英语 </td> 

    <td>60 </td> 

  </tr> 

</table> 

 

<script type="text/javascript">

window.onload = function(){

var tab = document.getElementById("tab");

var maxCol = 3, val, count, start;

 

for(var col = maxCol-1; col >= 0 ; col--){

count = 1;

val = "";

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

if(val == tab.rows[i].cells[col].innerHTML){

count++;

}else{

if(count > 1){ //合并

start = i - count;

tab.rows[start].cells[col].rowSpan = count;

for(var j=start+1; j<i; j++){

tab.rows[j].cells[col].style.display = "none";

}

count = 1;

}

val = tab.rows[i].cells[col].innerHTML;

}

}

if(count > 1 ){ //合并,最后几行相同的情况下

start = i - count;

tab.rows[start].cells[col].rowSpan = count;

for(var j=start+1; j<i; j++){

tab.rows[j].cells[col].style.display = "none";

}

}

}

};

 

</script>

</body> 

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值