一种HTML table合并单元格的思路
/**
* 合并单元格
* @param table1 表格的ID
* @param startRow 起始行
* @param col 合并的列号,对第几列进行合并(从0开始)。如果传下来为0就是从第一列开头到结束合并
*/ function mergeCell(table1, startRow, mergeColArr){ var tb = document.getElementById(table1);
var endRow=tb.rows.length;
var colLen = tb.rows[0].cells.length - 1;
var cmpCnt = "order_no";
var orderRows = [];
var bgColor = ["rgb(252,252,252)","rgb(242,242,242)"];
var orderIdx = 0;
//每个订单的起始行号
var mergeStarRow = 1; for (var i = startRow; i < endRow; i++) { if(typeof tb.rows[i + 1] === "undefined"){ for(var m = colLen; m >= 0; m--){
tb.rows[i].cells[m].style.backgroundColor = bgColor[orderIdx % 2];
}
break;
} var prev_rows = tb.rows[startRow],prev_cells = prev_rows.cells;
var next_rows = tb.rows[i + 1],next_cells = next_rows.cells; if ($.trim(prev_rows.getAttribute(cmpCnt)) == $.trim(next_rows.getAttribute(cmpCnt)))
{
if(typeof tb.rows[i + 2] === "undefined"){
orderRows.push({"starow":mergeStarRow,"endrow":i+1});
}
continue;
}else{
startRow = i + 1;
orderRows.push({"starow":mergeStarRow,"endrow":i});
mergeStarRow = startRow;
orderIdx++;
}
} var len = orderRows.length; for(var n = 0;n < len; n++){ var starow = orderRows[n]["starow"];
var endrow = orderRows[n]["endrow"];
var rowspan = endrow - starow + 1; //循环行
for(var j = starow; j <= endrow; j++){ var flag = false;
//反序循环列(因为删掉td后索引会变)
for(var k = colLen; k >= 0; k--){ tb.rows[j].cells[k].style.backgroundColor = bgColor[n % 2];
if(mergeColArr.indexOf(k) > -1){ //如果是第一行,就设置rowSpan
if(j === starow){
tb.rows[j].cells[k].rowSpan = rowspan;
}else{
//否则就倒序删掉mergeColArr[k]列
tb.rows[j].removeChild(tb.rows[j].cells[k]);
}
} } } } } mergeCell('c1',1,[0,1,2,6,7,8,9,10,12]);
下面是合并后的效果 :
一种HTML table合并单元格的思路的更多相关文章
- table中tr间距的设定table合并单元格 colspan(跨列)和rowspan(跨行)
table中的tr的默认display:table-row,虽然可以修改为display:block但是就失去了tr特有的显示效果,如(td自动对齐): 并且在tr中对起设定padding是有用的,可 ...
- css table 合并单元格
1. css table 合并单元格 colspan:合并列, rowspan:合并行, 合并行的时候,比如rowspan="2",它的下一行tr会少一列: 合并列的时候,比如co ...
- table合并单元格
table合并单元格 新建一张表格.要求表格有四行四列,当中第一行的四列合并,第二行.第三行和第四行的第一列合并 <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- ant design Table合并单元格合并单元格怎么用?
1.ant design table合并单元格怎么用?
- BootStrap Table 合并单元格
为了更直观展示表格的一大堆乱七八糟的数据,合并单元格就派上用场: 效果: 贴上JSON数据(后台查询数据一定要对合并字段排序): [ { "city": "广州市&quo ...
- table合并单元格colspan和rowspan .
colspan和rowspan这两个属性用于创建特殊的表格. colspan是“column span(跨列)”的缩写.colspan属性用在td标签中,用来指定单元格横向跨越的列数: 在浏览器中将显 ...
- JQuery Table 合并单元格-解决Bug版本
网络中提供的方法是: <script type="text/javascript"> function _w_table_rowspan(_w_table_id, _w ...
- table合并单元格 colspan(跨列)和rowspan(跨行)
colspan和rowspan这两个属性用于创建特殊的表格. colspan是“column span(跨列)”的缩写.colspan属性用在td标签中,用来指定单元格横向跨越的列数: 在浏览器中将显 ...
- Html table 合并单元格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- BZOJ 4034 洛谷3178 树上操作题解
一个很裸的树链剖分模板.注意一下数据范围,有的地方要开longlong,这就是唯一的陷阱了. # include<iostream> # include<cstdio> # i ...
- C++模板编译模型
一:传统的编译模型 使用C/C++进行编程时,一般会使用头文件以使定义和声明分离,并使得程序以模块方式组织.将函数声明.类的定义放在头文件中,而将函数实现以及类成员函数的定义放在独立的文件中. 但是对 ...
- docker保存容器的修改
docker保存容器修改 通过在容器中运行某一个命令,可以把对容器的修改保存下来, 这样下次可以从保存后的最新状态运行该容器.docker中保存状态的过程称之为committing, 它保存的新旧状态 ...
- win10 uwp 使用动画修改 Grid column 的宽度
今天 wurstmitbrot 问如何通过动画修改 Grid 的 column ,虽然 column 是一个依赖属性,可以绑定,但是做出动画还是比较难的. 本文告诉大家如何对 Grid 做动画. 首先 ...
- Java练习 SDUT-1132_斐波那契数列
C/C++经典程序训练2---斐波那契数列 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 编写计算斐波那契(Fibon ...
- Freeware Tools For Linux, http://www.debianhelp.co.uk/tools.htm
Freeware Tools For Linux, http://www.debianhelp.co.uk/tools.htm Freeware Tools For Linux DNS related ...
- selenium webdriver学习(九)------------如何操作cookies(转)
selenium webdriver学习(九)------------如何操作cookies 博客分类: Selenium-webdriver Web 测试中我们经常会接触到Cookies,一个C ...
- TabHost选项卡的实现(二):使用Fragment实现
在上一篇博客<TabHost选项卡的实现(一):使用TabActivity实现>中,讲解了如何使用TabActivity创建管理选项卡,但是,通过TabActivity创建选项卡的方式已经 ...
- Python--day62--编辑出版社功能
1,Django项目主要用到的文件
- hdu 4394 Digital Square(bfs)
Digital Square Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...