Javascript合併表格中具有相同內容的單元格
阿新 • • 發佈:2019-02-17
HTML或者JSP的TABLE需要不同行但是內容相同的單元格進行合併,本文以省市縣為例,對錶格中的省市進行二級合併,具體的頁面程式碼和樣式不再展示,主要介紹JS如何實現TABLE的單元格合併(無需第三方庫)。
JS程式碼如下:
Function mergeTable( ){ //預設表格首行為表頭,從第二行(index=1)開始合併 var row = 1; //col=0第一列,col=1第二列 var col = 0; var provincePos=1; var cityPos=1; //上次儲存的省份值 var lastProvinceValue = ""; //上次儲存的城市值 var lastCityValue = ""; //本次提取的省份值 var provinceValue = ""; //本次提取的城市值 var cityValue = ""; //獲取表格Dom節點 var table = document.getElementById("cityList"); //首先判斷表格第一行是否有資料(預設第一行沒有資料則表格為空,不需要接下來的步驟直接跳出。) if("" == table.rows[1].cells[0].innerText) { //可以直接return,也可以自定義方法。 }else{ //合併省份程式碼 for(var i=row; i<table.rows.length; i++){ provinceValue = table.rows[i].cells[col].innerText; cityValue = table.rows[i].cells[col+1].innerText; if(lastProvinceValue == provinceValue){ //合併城市程式碼 if(lastCityValue == cityValue){ table.rows[i].deleteCell(col+1); table.rows[i-cityPos].cells[col+1].rowSpan = table.rows[i-cityPos].cells[col+1].rowSpan+1; cityPos++; }else{ lastCityValue = cityValue; cityPos=1; } table.rows[i].deleteCell(col); table.rows[i-provincePos].cells[col].rowSpan = table.rows[i-provincePos].cells[col].rowSpan+1; provincePos++; }else{ lastProvinceValue = provinceValue; lastCityValue = cityValue; provincePos=1; cityPos=1; } } } }
上述JS程式碼可以直接放在SCRIPT中檢測,同時如果所用的JS框架中列表展示具有回撥功能可以放在回撥引數中,例如:
"drawCallback":mergeTable()
上述JS程式碼只是簡單的封裝TABLE合併單元格,耦合性還較高,希望道友能夠共同討論,抽象出完全解耦的功能函式。