博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js合并td根据后台返回动态数据
阅读量:5796 次
发布时间:2019-06-18

本文共 1396 字,大约阅读时间需要 4 分钟。

  hot3.png

  1. //tbl:table对应的dom元素,  
  2. //beginRow:从第几行开始合并(从0开始),  
  3. //endRow:合并到哪一行,负数表示从底下数几行不合并  
  4. //colIdxes:合并的列下标的数组,如[0,1]表示合并前两列,[0]表示只合并第一列  
  5. function mergeSameCell(tbl,beginRow,endRow,colIdxes){  
  6.     var colIdx = colIdxes[0];  
  7.     var newColIdxes = colIdxes.concat();  
  8.     newColIdxes.splice(0,1)  
  9.     var delRows = new Array();  
  10.     var rs = tbl.rows;  
  11.     //endRow为0的时候合并到最后一行,小于0时表示最后有-endRow行不合并  
  12.     if(endRow === 0){  
  13.         endRow = rs.length - 1;  
  14.     }else if(endRow < 0){  
  15.         endRow = rs.length - 1 + endRow;  
  16.     }  
  17.     var rowSpan = 1; //要设置的rowSpan的值  
  18.     var rowIdx = beginRow; //要设置rowSpan的cell行下标  
  19.     var cellValue; //存储单元格里面的内容  
  20.     for(var i=beginRow; i<= endRow + 1; i++){  
  21.         if(i === endRow + 1){//过了最后一行的时候合并前面的单元格  
  22.             if(newColIdxes.length > 0){  
  23.                 mergeSameCell(tbl,rowIdx,endRow,newColIdxes);  
  24.             }  
  25.             rs[rowIdx].cells[colIdx].rowSpan = rowSpan;  
  26.         }else{  
  27.             var cell = rs[i].cells[colIdx];  
  28.             if(i === beginRow){//第一行的时候初始化各个参数  
  29.                 cellValue = cell.innerHTML;  
  30.                 rowSpan = 1;  
  31.                 rowIdx = i;  
  32.             }else if(cellValue != cell.innerHTML){//数据改变合并前面的单元格  
  33.                 cellValue = cell.innerHTML;  
  34.                 if(newColIdxes.length > 0){  
  35.                     mergeSameCell(tbl,rowIdx,i - 1,newColIdxes);  
  36.                 }  
  37.                 rs[rowIdx].cells[colIdx].rowSpan = rowSpan;  
  38.                 rowSpan = 1;  
  39.                 rowIdx = i;  
  40.             }else if(cellValue === cell.innerHTML){//数据和前面的数据重复的时候删除单元格  
  41.                 rowSpan++;  
  42.                 delRows.push(i);  
  43.             }  
  44.         }  
  45.     }  
  46.     for(var j=0;j<delRows.length; j++){  
  47.         rs[delRows[j]].deleteCell(colIdx);  
  48.     }  
  49. }  
  50.   
  51. //调用  
  52. mergeSameCell(document.getElementById('tableTbl'),1,-1,[0,1]); 

转载于:https://my.oschina.net/SimTao/blog/1842613

你可能感兴趣的文章
无服务器计算的黑暗面:程序移植没那么容易
查看>>
在我的职业生涯中,没有一种技能比SQL更有用!
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
ApiBoot 0.1.1.RELEASE 版本发布!!!
查看>>
Java生成GUID的方法
查看>>
poj 2528 Mayor's posters(线段树+离散化)
查看>>
Webpack入门教程三十
查看>>
虚拟路由冗余协议VRRP
查看>>
故障解决:发生系统错误 67 找不到网络名
查看>>
ffmpeg中的sws_scale算法性能测试
查看>>
Spring4-AOP通知
查看>>
Linux unit11
查看>>
user and group
查看>>
uClinux for Linux Programmers
查看>>
kotlin避免判空语句
查看>>
grunt使用初步
查看>>
Java NIO 使用实例
查看>>
以字符流的形式读取字节流的文件
查看>>
vue中使用vconsole--移动端调试神器
查看>>
Java 实现读取图片尺寸、生成水印和生成验证码方法
查看>>