1. 程式人生 > >封裝Jquery 合並table中任何同列數據

封裝Jquery 合並table中任何同列數據

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中任何同列數據