1. 程式人生 > >js控制單元格 行 列 相同內容合併

js控制單元格 行 列 相同內容合併

tabObjId:table 的id 

cellindex :無效,可根據需要修改成有效。

beginRow:從第幾行開始,暫時預設傳0,其他未測試。

function SpanGrid(tabObjId, cellindex, beginRow) {

    var colIndex = cellindex;
    var rowBeginIndex = beginRow;
    var tabObj = document.getElementById(tabObjId);
    if (tabObj != null) {
        var i, j, m, k, q,w,e,r;


        var intSpan;
        var strTemp;

        m = 0;

//這個For迴圈是合併行

        for(k=0;k<tabObj.rows[0].cells.length; k++){
            colIndex=k;
            for (i = rowBeginIndex; i < tabObj.rows.length; i++) {
                        intSpan = 1;
                        m++;
                        strTemp = tabObj.rows[i].cells[colIndex].innerText;
                        for (j = i + 1; j < tabObj.rows.length; j++) {
                            if (strTemp == tabObj.rows[j].cells[colIndex].innerText) {
                                intSpan++;
                                tabObj.rows[i].cells[colIndex].rowSpan = intSpan;
                                tabObj.rows[j].cells[colIndex].style.display = "none";
                            }
                            else {
                                break;
                            }
                        }


            }
        }
//這個For迴圈是合併列(無需合併列可刪除)
        for (q = rowBeginIndex; q < tabObj.rows.length; q++) {
            for(w=0;w<tabObj.rows[0].cells.length; w++){
                intSpan = 1;
                colspan = tabObj.rows[q].cells[w].rowSpan;
                strTemp = tabObj.rows[q].cells[w].innerText;
                if( "none" == tabObj.rows[q].cells[w].style.display){
                    continue;
                }
                for(e=w+1;e<tabObj.rows[q].cells.length; e++){
                    if( "none" == tabObj.rows[q].cells[e].style.display){
                        continue;
                    }
                    colspan1 =tabObj.rows[q].cells[e].rowSpan
                    if(strTemp == tabObj.rows[q].cells[e].innerText && ( colspan == 
                        colspan1)){
                        intSpan++;
                        tabObj.rows[q].cells[w].colSpan = intSpan;
                        tabObj.rows[q].cells[e].style.display = "none";
                    }
                    else {
                        break;
                    }
                }


            }


        }
        
        i = j - 1;
    }
}