js 按相同行合并table单元格

查到的合并的代码

 1 function combineRows(tableid) {
 2             var tab = document.getElementById(tableid);
 3             var maxcol = 4, count, value, start;
 4             for (var col = maxcol; col >= 0; col--) {
 5                 count = 1;
 6                 value = "";
 7                 for (var i = 1; i < tab.rows.length; i++) {
 8
 9                     var temp = tab.rows[i].cells[col];
10                     if (temp == null || typeof (temp) == "undefine") {
11                         continue;
12                     }
13                     if (value == tab.rows[i].cells[col].innerHTML) {
14                         count++;
15                     }
16                     else {              //合并
17                         if (count > 1) {
18                             start = i - count;
19                             tab.rows[start].cells[col].rowSpan = count;
20                             for (var j = start + 1; j < i; j++) {
21                                 tab.rows[j].deleteCell(col);
22                             }
23                             count = 1;
24                         }
25                         value = tab.rows[i].cells[col].innerHTML;
26
27                     }
28                 }
29                 if (count > 1) { //合并,最后几行相同的情况下
30                     start = i - count;
31                     tab.rows[start].cells[col].rowSpan = count;
32
33                     for (var j = start + 1; j < i; j++) {
34                         tab.rows[j].deleteCell(col);
35                     }
36                 }
37
38             }
39         }

  1 <html>
  2 <head>
  3     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  4     <title>合并表格</title>
  5     <script>
  6         ///////////////////////////////////////////////
  7         //功能:合并表格
  8         //参数:tb-需要合并的表格ID
  9         //参数:colLength--需要对前几列进行合并,比如,
 10         //想合并前两列,后面的数据列忽略合并,colLength应为2
 11         //缺省表示对全部列合并
 12         //data:2011.11.06
 13         ///////////////////////////////////////////////
 14         function uniteTable(tb, colLength) {
 15             //检查表格是否规整
 16             if (!checkTable(tb)) return;
 17             var i = 0;
 18             var j = 0;
 19             var rowCount = tb.rows.length; //行数
 20             var colCount = tb.rows[0].cells.length; //列数
 21             var obj1 = null;
 22             var obj2 = null;
 23             //为每个单元格命名
 24             for (i = 0; i < rowCount; i++) {
 25                 for (j = 0; j < colCount; j++) {
 26                     tb.rows[i].cells[j].id = "tb__" + i.toString() + "_" + j.toString();
 27                 }
 28             }
 29             //逐列检查合并
 30             for (i = 0; i < colCount; i++) {
 31                 if (i == colLength) return;
 32                 obj1 = document.getElementById("tb__0_" + i.toString())
 33                 for (j = 1; j < rowCount; j++) {
 34                     obj2 = document.getElementById("tb__" + j.toString() + "_" + i.toString());
 35                     if (obj1.innerText == obj2.innerText) {
 36                         obj1.rowSpan++;
 37                         obj2.parentNode.removeChild(obj2);
 38                     } else {
 39                         obj1 = document.getElementById("tb__" + j.toString() + "_" + i.toString());
 40                     }
 41                 }
 42             }
 43         }
 44
 45         /////////////////////////////////////////
 46         //功能:检查表格是否规整
 47         //参数:tb--需要检查的表格ID
 48         //data: 2011.11.06
 49         /////////////////////////////////////////
 50         function checkTable(tb) {
 51             if (tb.rows.length == 0) return false;
 52             if (tb.rows[0].cells.length == 0) return false;
 53             for (var i = 0; i < tb.rows.length; i++) {
 54                 if (tb.rows[0].cells.length != tb.rows[i].cells.length) return false;
 55             }
 56             return true;
 57         }
 58     </script>
 59 </head>
 60 <body>
 61     <table width="400" border="1" id="table1">
 62         <tr>
 63             <td>列名1</td>
 64             <td>列名2</td>
 65             <td>列名3</td>
 66             <td>列名4</td>
 67             <td>列名5</td>
 68         </tr>
 69         <tr>
 70             <td>a</td>
 71             <td>for</td>
 72             <td>100</td>
 73             <td>200</td>
 74             <td>1</td>
 75         </tr>
 76         <tr>
 77             <td>a</td>
 78             <td>for</td>
 79             <td>100</td>
 80             <td>300</td>
 81             <td>2</td>
 82         </tr>
 83         <tr>
 84             <td>a</td>
 85             <td>if</td>
 86             <td>100</td>
 87             <td>200</td>
 88             <td>3</td>
 89         </tr>
 90         <tr>
 91             <td>a</td>
 92             <td>if</td>
 93             <td>300</td>
 94             <td>230</td>
 95             <td>4</td>
 96         </tr>
 97         <tr>
 98             <td>a</td>
 99             <td>if</td>
100             <td>320</td>
101             <td>230</td>
102             <td>5</td>
103         </tr>
104     </table>
105     <br>
106     <input type="button" value="合并表格" onclick="uniteTable(table1, 4)">
107 </body>
108 </html>

时间: 2024-10-15 01:41:26

js 按相同行合并table单元格的相关文章

js合并table单元格实例

这里展示js合并table的单元格,代码亲测可行 后台采用springmvc搭建 Record实体类 public class Record {     public String isp;     public String large_area;     public String province;     public String name;     public String age;       ......   //省略get和set方法  } action方法         

OpenXml合并Table单元格(合并性别列)

using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using OpenXML.Model; using System; using System.Collections.Generic; namespace OpenXML { class Program { //表格数据 public static List<List

js合并table单元格(拼table的时候并不知道具体几行几列)

Sys.Application.add_load(function () { var tab = document.getElementById("ctl00_ContentPlaceHolder1_viewcontrolTT_Repeater1_ctl00_viewcontrolTT_grid"); //要合并的tableID if (!tab) { alert("未获取到表格!"); } else { //从第二行开始,排除标题行 var startRow =

Javascript 动态合并table单元格

废话不说直接上代码 <!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=&quo

jquery实现的拖动可以调整table单元格大小代码实例

jquery实现的拖动可以调整table单元格大小代码实例: 本章节介绍一下如果利用jquery实现表格单元格可以通过鼠标拖动调整大小的效果,当然如果让我们完全写代码的话,可能会比较的复杂,不过有现成的插件可以使用,只要简单的几个步骤就可以实现我们的要求. 一.引入相关库文件: 要使用相关插件,那就必须要引入相关的代码文件,如下: <script src="/js/jquery-1.8.0.min.js" type="text/javascript">&

Latex 制作斜线表头、合并行列单元格

这篇文章主要给出一些 Latex 制作斜线表头.合并行单元格与合并列单元格的 demo 演示 latex:制作斜线表头 \begin{tabular}{|l|ccc|} \hline \diagbox{Time}{Room}{Day} & Mon & Tue & Wed \\ \hline Morning & used & used & \\ Afternoon & & used & used \\ \hline \end{tabul

datawindow合并相同单元格

在dataobject菜单rows--->supress repeating values找到要合并的列 缺陷:不能实现居中的功能! datawindow合并相同单元格,布布扣,bubuko.com

Firefox下table单元格td设计relative定位失效解决方案(转)

问题描述: 默认情况下,table的单元格td的display为table-cell,在IE 给td设置position:relative,然后给它包含的一个容器使用position:absolute进行定位是有效的,但在FF下却不可以. 但是在IE下,position:absolute的容器的z-index总是比td的z-index低,td层总是在 position:absolute的容器的上面 发生条件: 1. IE6.IE7.IE8和FF浏览器 2. 使用td默认样式,设置td的posit

Dev GridControl,GridView 显示多行文本及合并相同单元格

显示多行文本的方法 首先把gridcontrol的views的Optionsview里的RowAutoHeight设置为True 在In-place Editor Repository 里添加 MemoEdit控件 在Columns里选择对应的列,在ColumnEdit里选择MemoEdit控件 合并相同单元格的方法 1:设置OptionsView.AllowCellMerge 为 True 此时所有列的相邻行的相同单元格都会合并 2:如部分列不需要自动合并功能 ,只需设置指定列的 Option