您的位置:知识库 » Web前端

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

作者: caojin723  来源: csdn  发布时间: 2009-07-12 22:28  阅读: 3845 次  推荐: 0   原文链接   [收藏]  

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

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

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

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

1、在html的head中引入jQuery

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

 

   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中调用合并函数合并单元格

 

 

   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

Web前端热门文章

    Web前端最新文章

      最新新闻

        热门新闻