当前位置: 代码迷 >> JavaScript >> JS自动合龙表格
  详细解决方案

JS自动合龙表格

热度:700   发布时间:2013-01-19 11:41:36.0
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年北京市医院分布情况

所在区 二级医院数量 三级医院数量 三甲级医院数量 四级医院数量
海淀区 8 54 14 8
15 64 36 76
朝阳区 5 69 23
17 54 43 18
73 35 45

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>

?

  相关解决方案