根据条件合并单元格
今天拿到一個(gè)需求就是需要合并單元格,對(duì)于看到table腦闊疼的我來說真的覺得要死了。jq庫有插件 但是 會(huì)有如下情況。
于是想自己寫,發(fā)現(xiàn)也不會(huì),怎么辦呢。面向百度,借鑒了大佬的eg :傳送門
于是有了如下(樣式自己去寫哦baby)
HTML:
js:
<script type="text/javascript">window.onload = function() { var tab = document.getElementById("process-demo-1"); //process-demo-1為你的table的idvar col = 3, //合并單元格的列數(shù) 如果需要范圍可以點(diǎn)擊上方傳送門去看大佬的val, count, start; count = 1; val = ""; val1 = "" for (var i = 1; i < tab.rows.length; i++) { if (val == tab.rows[i].cells[3].innerHTML && val1 == tab.rows[i].cells[0].innerHTML) { //判斷 count++; } else { if (count > 1) { //合并start = i - count; tab.rows[start].cells[3].rowSpan = count; for (var j = start + 1; j < i; j++) { tab.rows[j].cells[3].style.display = "none"; } count = 1; } val = tab.rows[i].cells[3].innerHTML; //用來判斷需要的那一列的數(shù)據(jù)是否相同val1 = tab.rows[i].cells[0].innerHTML; //這里是用來判斷col0是否相同 } } if (count > 1 ) { //合并,最后幾行相同的情況下start = i - count; tab.rows[start].cells[3].rowSpan = count; for (var j = start + 1; j < i; j++) { tab.rows[j].cells[3].style.display = "none"; } } };</script>最后的效果圖
封裝一下吧
如果需要合并多個(gè),如下:
hebing("process-demo-1", [2,3], 0) //這個(gè)方法即合并單個(gè)也可合并多個(gè),只需要記住需要第二個(gè)參數(shù)傳數(shù)組function hebing(tableId, list, bynum) { //tableId 為表格的id,list為合并的列序號(hào)(從0開始排哦,如果是一個(gè)請(qǐng)傳[n],如果是多個(gè)請(qǐng)傳[n,m],請(qǐng)以array的形式傳過去),bynum(依據(jù)哪一列)var tab = document.getElementById(tableId);for (let n = 0; n < list.length; n++) {var val, count, val1, start, num; count = 1; val = ""; val1 = "" ;start = 0num = list[n]for (var i = 1; i < tab.rows.length; i++) { if (val == tab.rows[i].cells[num].innerHTML && val1 == tab.rows[i].cells[bynum].innerHTML) { count++; } else { if (count > 1) { //合并start = i - count; tab.rows[start].cells[num].rowSpan = count; for (var j = start + 1; j < i; j++) { tab.rows[j].cells[num].style.display = "none"; } count = 1; } val = tab.rows[i].cells[num].innerHTML; val1 = tab.rows[i].cells[bynum].innerHTML; } } if (count > 1 ) { //合并,最后幾行相同的情況下start = i - count; tab.rows[start].cells[num].rowSpan = count; for (var j = start + 1; j < i; j++) { tab.rows[j].cells[num].style.display = "none"; } } } };總結(jié)
- 上一篇: 本地remix搭建
- 下一篇: 《Human-Level Artific