使用JQ實現相同行或列合併

/**
* @ function:合併指定表格列(表格id爲table_id)指定列(列數爲table_colnum)的相同文本的相鄰單元格
* @ param:table_id 爲須要進行合併單元格的表格的id。如在HTMl中指定表格 id="data" ,此參數應爲 #data 
* @ param:table_colnum 爲須要合併單元格的所在列。爲數字,從最左邊第一列爲1開始算起。
*/
function table_rowspan(table_id, table_colnum) {
    table_firsttd = "";
    table_currenttd = "";
    table_SpanNum = 0;
    table_Obj = $(table_id + " tr td:nth-child(" + table_colnum + ")");
    
    table_Obj.each(function (i) {
        if (i == 0) {
            table_firsttd = $(this);
            table_SpanNum = 1;
        } else {
            table_currenttd = $(this);
            if (table_firsttd.text() == table_currenttd.text()) { //這邊注意不是val()屬性,而是text()屬性
                //td內容爲空的不合並
                if(table_firsttd.text() !=""){
                    table_SpanNum++;
                    table_currenttd.hide(); //remove();
                    table_firsttd.attr("rowSpan", table_SpanNum);
                }
            } else {
                table_firsttd = $(this);
                table_SpanNum = 1;
            }
        }
    });
}
/*
* @ function:合併指定表格行(表格id爲table_id)指定行(行數爲table_rownum)的相同文本的相鄰單元格
* @ param:table_id 爲須要進行合併單元格的表格id。如在HTMl中指定表格 id="data" ,此參數應爲 #data 
* @ param:table_rownum 爲須要合併單元格的所在行。其參數形式請參考jquery中nth-child的參數。
          若是爲數字,則從最左邊第一行爲1開始算起。
          "even" 表示偶數行
          "odd" 表示奇數行
          "3n+1" 表示的行數爲一、四、七、10.......
* @ param:table_maxcolnum 爲指定行中單元格對應的最大列數,列數大於這個數值的單元格將不進行比較合併。
          此參數能夠爲空,爲空則指定行的全部單元格要進行比較合併。
*/
function table_colspan(table_id, table_rownum, table_maxcolnum) {
    if (table_maxcolnum == void 0) { table_maxcolnum = 0; }
    table_firsttd = "";
    table_currenttd = "";
    table_SpanNum = 0;
    $(table_id + " tr:nth-child(" + table_rownum + ")").each(function (i) {
        table_Obj = $(this).children();
        table_Obj.each(function (i) {
            if (i == 0) {
                table_firsttd = $(this);
                table_SpanNum = 1;
            } else if ((table_maxcolnum > 0) && (i > table_maxcolnum)) {
                return "";
            } else {
                table_currenttd = $(this);
                if (table_firsttd.text() == table_currenttd.text()) {
                    //td內容爲空的不合並
                    if (table_firsttd.text() !="") {
                    table_SpanNum++;
                    table_currenttd.hide(); //remove();
                    table_firsttd.attr("colSpan", table_SpanNum);
                    table_firsttd.attr("style", "text-align:center");
                    }
                } else {
                    table_firsttd = $(this);
                    table_SpanNum = 1;
                }
            }
        });
    });
} 
相關文章
相關標籤/搜索