300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > javascript根据单元格内容动态合并相同内容单元格

javascript根据单元格内容动态合并相同内容单元格

时间:2023-08-12 15:43:29

相关推荐

javascript根据单元格内容动态合并相同内容单元格

记录下,按照自己的思维流程写的代码,难免有冗余和不合理的地方,着急要用,也懒得优化,适用于有合并前两列中相同内容单元格需求的地方。如有有人能受到启发写出更加好用完美的代码,那我会感到非常高兴。另外发现网上已经有人写了不少这方面的例子,但是都有BUG,我这段代码也欢迎大家测试,有什么不足欢迎评论。

function HB(tableId) {var tab = document.getElementById(tableId);var tabRows = tab.rows.length;//取得表格的行数var startRow = 0;//第一列种子索引var rowNum = 0;//第一列合并的行数操作数var addNum=1;//第二列合并行数操作数,第二列合并的行数不会超过第一列合并的行数var startRow2 = 0;//第二列种子索引var cell=0;//第二列合并操作种子标记,当第一个合并的单元格完成监测后,将种子置为-1for (var i = 0; i < tabRows; i++) {//合并第一列相同单元格if (i == 0) {startRow = i;rowNum++;continue;}if (tab.rows[startRow].cells[0].innerHTML == tab.rows[i].cells[0].innerHTML) {tab.rows[i].removeChild(tab.rows[i].cells[0]);rowNum++;if(startRow==(i+1-rowNum)){tab.rows[startRow].cells[0].rowSpan = rowNum;}continue;}//新合并第二列addNum=1;cell=0;for(var n=0;n<rowNum;n++){if(n==0){startRow2=startRow;//首次进入,第一行的第二列作为种子continue;}//alert("tab.rows["+startRow2+"].cells["+(cell+1)+"].innerHTML"+tab.rows[startRow2].cells[cell+1].innerHTML);//alert("tab.rows["+(startRow2+addNum)+"].cells[0].innerHTML"+tab.rows[startRow2+addNum].cells[0].innerHTML);if(tab.rows[startRow2].cells[cell+1].innerHTML==tab.rows[startRow2+addNum].cells[0].innerHTML){if(n==rowNum-1){//alert("最后一次循环发现合并");tab.rows[startRow2+addNum].removeChild(tab.rows[startRow2+addNum].cells[0]);addNum++;tab.rows[startRow2].cells[cell+1].rowSpan=addNum;break;}tab.rows[startRow2+addNum].removeChild(tab.rows[startRow2+addNum].cells[0]);addNum++; //alert("addNum:"+addNum);continue;}//alert("出来了!!!"+n);if(addNum==1){//alert("下方没有找到相同的合并项,作为种子继续寻找");}tab.rows[startRow2].cells[cell+1].rowSpan=addNum;//设置新种子索引startRow2=startRow2+addNum;cell=-1;addNum=1;} tab.rows[startRow].cells[0].rowSpan = rowNum;startRow = i;rowNum = 1;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。