//合并行([开始行号,结束行号],[开始列号,结束列号]) function rowSpan(cRow,cCol){ var tab = document.getElementById("table${idSuffix}"); if(!tab){ return; } 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; 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]; } } } //循环结束后再循环一次,处理已存储的行 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]]); } }