js合并table儲存格(拼table的時候並不知道具體幾行幾列)
Sys.Application.add_load(function () { var tab = document.getElementById("ctl00_ContentPlaceHolder1_viewcontrolTT_Repeater1_ctl00_viewcontrolTT_grid"); //要合并的tableID if (!tab) { alert("未擷取到表格!"); } else { //從第二行開始,排除標題列 var startRow = 1; //迴圈記錄表格中td的內容,用來判斷td中的value是否發生了改變 var td1TempV = ""; var td2TempV = ""; var td3TempV = ""; //如果td的值相同,那麼變數加1, 否則將臨時變數加入集合中 var rowCount1 = 1; var rowCount2 = 1; var rowCount3 = 1; //得到相同內容的行數的集合www.bkjia.com var totalcount1 = new Array(); var totalcount2 = new Array(); var totalcount3 = new Array(); for (var i = 1; i < tab.rows.length; i++) { //首先拿出來td的值 var td1Text = tab.rows[i].cells[0].innerText; var td2Text = tab.rows[i].cells[1].innerText; var td3Text = tab.rows[i].cells[2].innerText; //如果是第一次走迴圈,直接continue; if (i == startRow) { td1TempV = td1Text; td2TempV = td2Text; td3TempV = td3Text; continue; } //如果當前拿出來的值和出處的值相同,那麼將臨時數量加1,否則添加到集合裡面 if (td1TempV == td1Text && td1Text != null && td1Text != "") { rowCount1++; } else { totalcount1.push(rowCount1); td1TempV = td1Text; rowCount1 = 1; } if (td2TempV == td2Text && td2Text != null && td2Text != "") { rowCount2++; } else { totalcount2.push(rowCount2); td2TempV = td2Text; rowCount2 = 1; } if (td3TempV == td3Text && td3Text != null && td3Text != "") { rowCount3++; } else { totalcount3.push(rowCount3); td3TempV = td3Text; rowCount3 = 1; } //判斷是否是迴圈的最後一次,如果是最後一次那個直接將當前的數量儲存到集合裡面 if (i == tab.rows.length - 1) { totalcount1.push(rowCount1); totalcount2.push(rowCount2); totalcount3.push(rowCount3); } } //臨時變數,再迴圈中判斷是否和數組中的一項值相同 var tNum1 = 0; var tNum2 = 0; var tNum3 = 0; //注意這個迴圈是倒著來的 for (var i = tab.rows.length - 1; i >= startRow; i--) { //臨時變數,儲存td var tTd1 = tab.rows[i].cells[0]; var tTd2 = tab.rows[i].cells[1]; var tTd3 = tab.rows[i].cells[2]; tNum1++; tNum2++; tNum3++; if (tab.rows.length == 2) { continue; } //如果發現tNum和數組中最後一個值相同,那麼就可以斷定相同的td已經結束[只是其中一個] if (tNum1 == totalcount1[totalcount1.length - 1]) { //給當前td添加rowSpan屬性 tTd1.setAttribute("rowSpan", totalcount1[totalcount1.length - 1]); tTd1.setAttribute("style", "background-color:#ffffff"); //將數組的最後一個元素彈出 totalcount1.pop(); tNum1 = 0; } else { //刪除當前td tab.rows[i].removeChild(tTd1); } if (tNum2 == totalcount2[totalcount2.length - 1]) { //給當前td添加rowSpan屬性 tTd2.setAttribute("rowSpan", totalcount2[totalcount2.length - 1]); tTd2.setAttribute("style", "background-color:#ffffff"); //將數組的最後一個元素彈出 totalcount2.pop(); tNum2 = 0; } else { //刪除當前td tab.rows[i].removeChild(tTd2); } if (tNum3 == totalcount3[totalcount3.length - 1]) { //給當前td添加rowSpan屬性 tTd3.setAttribute("rowSpan", totalcount3[totalcount3.length - 1]); tTd3.setAttribute("style", "background-color:#ffffff"); //將數組的最後一個元素彈出 totalcount3.pop(); tNum3 = 0; } else { //刪除當前td tab.rows[i].removeChild(tTd3); } } }});