用jQuery合并表格中相同文本的相邻单元格

来源:互联网 发布:ubuntu怎么进入grub 编辑:程序博客网 时间:2024/05/16 23:54

已经生成的数据表格大致内容如下:

地区地区商品代码商品名称数量有效期至距效期(月)产品批号规格单位条形码广东深圳00028红花油       广东深圳00028红花油       广东深圳00028红花油       广东广州00027白花油       广东广州00028红花油       广东深圳00028红花油       广东深圳00028红花油       广东深圳00028红花油       广东深圳00028红花油       

 

需要将前四列具有相同文本的相邻单元格进行自动合并,合并后如下:

地区地区商品代码商品名称数量有效期至距效期(月)产品批号规格单位条形码广东深圳00028红花油                     广州00027白花油       00028红花油       深圳                            

 

 1、在html的head中引入jQuery

[javascript] view plaincopy
  1. <script language="javascript" type="text/javascript" src="js/jquery-1.2.js"></script>  
 

 2、添加合并单元格的函数

[javascript] view plaincopy
  1. //函数说明:合并指定表格(表格id为_w_table_id)指定列(列数为_w_table_colnum)的相同文本的相邻单元格  
  2. //参数说明:_w_table_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data   
  3. //参数说明:_w_table_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。  
  4. function _w_table_rowspan(_w_table_id,_w_table_colnum){  
  5.     _w_table_firsttd = "";  
  6.     _w_table_currenttd = "";  
  7.     _w_table_SpanNum = 0;  
  8.     _w_table_Obj = $(_w_table_id + " tr td:nth-child(" + _w_table_colnum + ")");  
  9.     _w_table_Obj.each(function(i){  
  10.         if(i==0){  
  11.             _w_table_firsttd = $(this);  
  12.             _w_table_SpanNum = 1;  
  13.         }else{  
  14.             _w_table_currenttd = $(this);  
  15.             if(_w_table_firsttd.text()==_w_table_currenttd.text()){  
  16.                 _w_table_SpanNum++;  
  17.                 _w_table_currenttd.hide(); //remove();  
  18.                 _w_table_firsttd.attr("rowSpan",_w_table_SpanNum);  
  19.             }else{  
  20.                 _w_table_firsttd = $(this);  
  21.                 _w_table_SpanNum = 1;  
  22.             }  
  23.         }  
  24.     });   
  25. }  
  26.   
  27. //函数说明:合并指定表格(表格id为_w_table_id)指定行(行数为_w_table_rownum)的相同文本的相邻单元格  
  28. //参数说明:_w_table_id 为需要进行合并单元格的表格id。如在HTMl中指定表格 id="data" ,此参数应为 #data   
  29. //参数说明:_w_table_rownum 为需要合并单元格的所在行。其参数形式请参考jQuery中nth-child的参数。  
  30. //          如果为数字,则从最左边第一行为1开始算起。  
  31. //          "even" 表示偶数行  
  32. //          "odd" 表示奇数行  
  33. //          "3n+1" 表示的行数为1、4、7、10.......  
  34. //参数说明:_w_table_maxcolnum 为指定行中单元格对应的最大列数,列数大于这个数值的单元格将不进行比较合并。  
  35. //          此参数可以为空,为空则指定行的所有单元格要进行比较合并。  
  36. function _w_table_colspan(_w_table_id,_w_table_rownum,_w_table_maxcolnum){  
  37.     if(_w_table_maxcolnum == void 0){_w_table_maxcolnum=0;}  
  38.     _w_table_firsttd = "";  
  39.     _w_table_currenttd = "";  
  40.     _w_table_SpanNum = 0;  
  41.     $(_w_table_id + " tr:nth-child(" + _w_table_rownum + ")").each(function(i){  
  42.         _w_table_Obj = $(this).children();  
  43.         _w_table_Obj.each(function(i){  
  44.             if(i==0){  
  45.                 _w_table_firsttd = $(this);  
  46.                 _w_table_SpanNum = 1;  
  47.             }else if((_w_table_maxcolnum>0)&&(i>_w_table_maxcolnum)){  
  48.                 return "";  
  49.             }else{  
  50.                 _w_table_currenttd = $(this);  
  51.                 if(_w_table_firsttd.text()==_w_table_currenttd.text()){  
  52.                     _w_table_SpanNum++;  
  53.                     _w_table_currenttd.hide(); //remove();  
  54.                     _w_table_firsttd.attr("colSpan",_w_table_SpanNum);  
  55.                 }else{  
  56.                     _w_table_firsttd = $(this);  
  57.                     _w_table_SpanNum = 1;  
  58.                 }  
  59.             }  
  60.         });  
  61.     });  
  62. }  

 

 3、在html的head中调用合并函数合并单元格

[javascript] view plaincopy
  1. <script type="text/javascript"><!--  
  2.     $(document).ready(function(){         
  3.         _w_table_rowspan("#spdata",4);  
  4.         _w_table_rowspan("#spdata",3);  
  5.         _w_table_rowspan("#spdata",2);  
  6.         _w_table_rowspan("#spdata",1);  
  7.     });  
  8. // -->  
  9. </script>  

0 0
原创粉丝点击