封裝Jquery 合並table中任何同列數據
阿新 • • 發佈:2017-12-13
ner else null 但是 script tar count bsp round
封裝代碼:
jQuery.fn.rowspan = function (colIdx) { //封裝JQuery同列值相同合並小插件 return this.each(function () { var that; $(‘tr‘, this).each(function (row) { $(‘td:eq(‘ + colIdx + ‘)‘, this).filter(‘:visible‘).each(function (col) { if (that != null && $(this).html() == $(that).html()) { rowspan = $(that).attr("rowSpan"); if (rowspan == undefined) { $(that).attr("rowSpan", 1); rowspan = $(that).attr("rowSpan"); } rowspan = Number(rowspan) + 1; $(that).attr("rowSpan", rowspan); $(this).hide(); } else { that = this; } }); }); }); }
調用方式:
$("#ceshi").rowspan(0); //.rowspan(0)從0即第一列開始
2純js寫法:
function hb(){ var tab = document.getElementById("subtable"); var maxCol = 3, val, count, start; var ys=""; for(var col = maxCol-1; col >= 0 ; col--) { count = 1; val = ""; for(var i=0; i<tab.rows.length; i++){if(val == tab.rows[i].cells[col].innerHTML){ count++; }else{ if(count > 1){ //合並 start = i - count; if(ys=="#00FFFF"){ ys="#EEEE00"; }else{ ys="#00FFFF"; } tab.rows[start].cells[col].rowSpan = count; tab.rows[start].cells[1].style.backgroundColor=ys;//改變顏色 // ys="#EEEE00"; // tab.rows[i].cells[1].style.backgroundColor="#00FFFF";//改變顏色綠色for(var j=start+1; j<i; j++){ // tab.rows[j].cells[col].style.display = "none"; tab.rows[j].removeChild(tab.rows[j].cells[col]); } count = 1; } val = tab.rows[i].cells[col].innerHTML; } } if(count > 1 ){ //合並,最後幾行相同的情況下 start = i - count; tab.rows[start].cells[col].rowSpan = count; for(var j=start+1; j<i; j++) { tab.rows[j].removeChild(tab.rows[j].cells[col]); } } } }
第一種方法,僅用20行代碼就可實現該功能,而且封裝在jq庫裏面,其他頁面可以直接調用。也就是說,其他頁面只需一行代碼就可實現該功能。即$("#ceshi").rowspan(0);
比起第一種,第二種方法比較復雜,而且會把tabel裏面所有相同列都合並,不實用。而且要改成僅合並第一列的話也不太好實現。但是思路可以學習一下。
封裝Jquery 合並table中任何同列數據