Jquery 合併表格單元內容相同的單元


沒合併之前的表格


合併要求是屬於父類是同類的列才能合併


合併後的表格內容是


形成了一個類似樹一樣的摸樣


代碼

/**
 * 
 * @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)	
		}
		
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章