如图,将mainId相同的前2列合并,因为mainId相同的数据个数不定,需要动态合并列,一直想不到好法子,请求各位网友。
代码在此,方便大家修改:https://jsfiddle.net/ryx47gL8/
如图,将mainId相同的前2列合并,因为mainId相同的数据个数不定,需要动态合并列,一直想不到好法子,请求各位网友。
代码在此,方便大家修改:https://jsfiddle.net/ryx47gL8/
export function rowSpan (id, row, cols, standardCol) {
var tb = document.getElementById(id)
var lastValue = ''
var value = ''
var pos = 1
for (var i = row; i < tb.rows.length; i++) {
value = tb.rows[i].cells[standardCol].innerHTML
if (value !== '' && value !== '\t' && value !== '\n' && value !== '\r') {
if (lastValue == value) { // eslint-disable-line
var colsbak = cols.slice(0)
colsbak.sort(function (a, b) {
return a - b
})
for (var c = colsbak.length - 1; c >= 0; c--) {
tb.rows[i].deleteCell(colsbak[c])
tb.rows[i - pos].cells[colsbak[c]].rowSpan = tb.rows[i - pos].cells[colsbak[c]].rowSpan + 1
}
pos++
} else {
lastValue = value
pos = 1
}
}
}
}
我是操作dom的。
id是表格的id,row:从第几行开始合并,一般是0,cols:数组,要合并的列,standardCol:标准列,也就是你的mainId那一列
像下面这样调用,要有dom后调用
rowSpan('fixedtb', 0, [0, 1, 2, 3, 4, 5], 5)
意思是,从第一行开始,以第6列为标准,合并前6列
5 回答7.2k 阅读✓ 已解决
5 回答8.2k 阅读
2 回答10.4k 阅读✓ 已解决
2 回答12.7k 阅读✓ 已解决
2 回答10.5k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
求人不如求自己,只能谷歌各种搜索了,终于找到法子了,参考文章https://blog.csdn.net/qq_2946...
放上完整代码供其他人参考https://jsfiddle.net/u06mo3sy/