沒合併之前的表格
合併要求是屬於父類是同類的列才能合併
合併後的表格內容是
形成了一個類似樹一樣的摸樣
代碼
/**
*
* @param {Object} _table_id tableid
* @param {Object} _table_row_start 要合併的最小列號
* @param {Object} _table_row_end 要合併的最大列號
* @param {Object} _table_startcol 合併的最大行號
* @param {Object} _table_endcol 合併的最小行號
*/
function _table_row_merge_cell(_table_id, _table_row_start,_table_row_end,_table_startcol,_table_endcol){
var table = $(_table_id);
//總的列數
var _merge_num = 0;
var _current_td = "";
var _first_td = ""
var ismerge = false; //合併標示符 當有單元格合併時爲true,此標識爲了防止出現一列合併完成後,不在驚醒下一列的合併
if( _table_row_end == void 0 ){_table_row_end = table.find('tr:eq(1) td').length} //初始化最小列號
if( _table_row_start == void 0 ){ _table_row_start = 0 } //初始化最大列號
if( _table_startcol == void 0){ _table_startcol = 1; } //開始的行號
if( _table_endcol == void 0){ _table_endcol = table.find('tr').length; } //結束的行號
var i = _table_row_start;
if(i >= _table_row_end){return} //超過最大列號後自動退出
for(var j = _table_startcol ; j < _table_endcol ; j++){ //行循環
if(j == _table_startcol){
_first_td = table.find('tr:eq('+j+') td:eq('+i+')')
_merge_num = 1;
}else{
_current_td = table.find('tr:eq('+j+') td:eq('+i+')')
if(_current_td.text() == _first_td.text()){
_merge_num++;
_current_td.hide(); //remove();
_first_td.attr("rowSpan",_merge_num);
ismerge = true
// _table_row_merge_cell(_table_id,(i+1),_table_row_end,j-1,j)
}else{
//嵌套調用 ,開始列爲當前列的下一列,結束列仍爲最後的列,開始行號爲當前行號
if(_merge_num > 1 ){
_table_row_merge_cell(_table_id,(i+1),_table_row_end,j-_merge_num,j)
}
_first_td = table.find('tr:eq('+j+') td:eq('+i+')')
_merge_num = 1;
ismerge = false;
}
}
}
//進行下一列的合併
if( ismerge){
_table_row_merge_cell(_table_id,(i+1),_table_row_end,(_table_endcol-_merge_num),_table_endcol)
}
}