ecology8合并表格相同内容的行
话不多说,上代码:
1 /** 2 * 合并表格相同行的内容 3 * @param {*} table 表格或者表格ID(最好是tbody,避免把表尾给合并了) 4 * @param {*} startRow 起始行,没有标题就从0开始 5 * @param {*} endRow 终止行,此参数是递归时检查的范围,一开始时会自动赋值为最后一行 6 * @param {*} col 当前处理的列 7 * @param {*} endCol 终止列 8 * @param {*} isInit 是否初始调用,如果是则在终止行为0时自动取最后一行 9 */ 10 function mergeCell(table, startRow, endRow, col, endCol, isInit) { 11 if (typeof (table) == 'string') 12 table = document.getElementById(table); 13 if (col >= table.rows[0].cells.length || col > endCol) { 14 return; 15 } 16 if (isInit == undefined) isInit = true; 17 //当检查第0列时检查所有行 18 if ((col == 0 || endRow == 0) && isInit) { 19 endRow = table.rows.length - 1; 20 } 21 for (var i = startRow; i < endRow; i++) { 22 var $td1=$(table.rows[startRow].cells[col]); 23 var $td2=$(table.rows[i + 1].cells[col]); 24 var value1=$td1.children("input").val(); 25 var value2=$td2.children("input").val(); 26 //程序是自左向右合并 27 if(value1==value2){ 28 //如果相同则隐藏下一行的同列单元格 29 $td2.hide(); 30 //更新rowSpan属性 31 table.rows[startRow].cells[col].rowSpan = (table.rows[startRow].cells[col].rowSpan | 0) + 1; 32 //当循环到终止行前一行并且起始行和终止行不相同时递归(因为上面的代码已经检查了i+1行,所以此处只到endRow-1) 33 if (i == endRow - 1 && startRow != endRow) { 34 mergeCell(table, startRow, endRow, col + 1, endCol, false); 35 } 36 } else { 37 //起始行,终止行不变,检查下一列 38 mergeCell(table, startRow, i, col + 1, endCol, false); 39 //增加起始行 40 startRow = i + 1; 41 } 42 } 43 }
调用:
1 mergeCell('oTable2',2,0,2,5,true);
欢迎交流!