就像竹林的灯火,被风吹过,摇摇曳曳,但永不熄灭!

html table 相同单元格合并

//合并行([开始行号,结束行号],[开始列号,结束列号])
rowSpan : function (cRow,cCol){
   var tab = document.getElementById("tableReport${idSuffix}");
   if(!tab){
      return;
   }
   var colTemp = null;
   var colSpanNum = 0;
   var rowTemp = [];
   var rowSpanNum = [];
   var removeArr = [];
   var isBreak = false;
   for(var i = cRow[0], l = tab.rows.length; i < l && i <= cRow[1]; i++) {
      isBreak = false;
      colTemp = null;
      colSpanNum = 0;
      var cells = tab.rows[i].cells;
      for(var j = cCol[0], h = cells.length; j < h && j <= cCol[1]; j++){

         var tdText = $.trim(cells[j].innerText);
         //行合并
         rowSpanNum[j] = rowSpanNum[j] | 0;
         if(rowTemp[j] && rowTemp[j].innerText == tdText && !isBreak){
            rowSpanNum[j]++;
            removeArr.push([i,j]);

         }else {
            isBreak = true;//前一列不同,往后的列都不合并
            if(rowSpanNum[j] > 0) {
               rowTemp[j].setAttribute("rowSpan",rowSpanNum[j]+1);
            }
            rowSpanNum[j] = 0;
            rowTemp[j] = cells[j];
         }
         //列合并
         if(colTemp && colTemp.innerText == tdText){
            colSpanNum += Number(cells[j].getAttribute("colSpan")) || 1;
            removeArr.push([i,j]);
            if (j+1 >= h || j+1 > cCol[1]) {
               if(colSpanNum > 0) {
                    colTemp.setAttribute("colSpan",colSpanNum + (Number(colTemp.getAttribute("colSpan")) || 1));
               }
            }
         }else {
            if(colSpanNum > 0) {
                colTemp.setAttribute("colSpan",colSpanNum + (Number(colTemp.getAttribute("colSpan")) || 1));
            }
            colSpanNum = 0;
            colTemp = cells[j];
         }
      }
   }

   //循环结束后再循环一次,处理已存储的行
   for(var j = cCol[0], h = cells.length; j < h && j <= cCol[1]; j++){
      rowSpanNum[j] = rowSpanNum[j] | 0;
      if(rowSpanNum[j] > 0) {
         rowTemp[j].setAttribute("rowSpan",rowSpanNum[j]+1);
      }
   }
   //倒序删除合并的行
   for(var z = 0,y = removeArr.length; z < y; y--){
      var arr = removeArr[y-1];
      tab.rows[arr[0]].removeChild(tab.rows[arr[0]].cells[arr[1]]);
   }
}
 
 

 

posted @ 2022-06-21 20:43  竹林的灯火  阅读(1246)  评论(0)    收藏  举报

w3school 在线教程 | 博客园 | sxsoft | 快包网 | 荆门泽优软件有限公司博客