一种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 ...
随机推荐
- linux下清除tomcat缓存
进入tomcat/bin目录下,执行命令:./shutdown.sh 然后执行命令:ps -aux ,查看tomcat是否真的关闭了 如果没有关闭则执行命令:kill -9 #pid来彻底关闭tomc ...
- UVA_10055:Hashmat the brave warrior
Language:C++ 4.8.2 #include<stdio.h> int main(void) { long long int a, b; while(scanf("%l ...
- 原生js实现复制文本到粘贴板
项目中经常会遇到点击按钮复制订单号.订单id等内容到粘贴板中的需求.可是通常我们都是用Ctrl + c或右击复制的,别操心,js也是有复制命令的,那就是document.execCommand('co ...
- 一 linux安装python3
参考 https://www.cnblogs.com/pyyu/p/7402145.html?tdsourcetag=s_pcqq_aiomsg 1 下载 网址:https://www.python. ...
- iOS 设计
APP引导页设计经验分享 http://www.cocoachina.com/design/20150615/12126.html 获取app安装的进度,6种不同的加载指示 http://www.co ...
- @atcoder - AGC035D@ Add and Remove
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N 张排成一行的卡片,第 i 张卡片上面写着 Ai. 重复 ...
- Flask学习之四 数据库
英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database 中文翻译地址:http://ww ...
- @loj - 2674@ 「NOI2012」美食节
目录 @description@ @solution@ @accepted code@ @details@ @description@ CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节. 作 ...
- QQ第三方登录报错error=-1
qq 第三方登录报错error=-1 再次实例化qc类.
- Intellj IDEA14上用Debug启动项目启动不了:Unable to open debugger port: java.net.SocketException "socket closed"
详情见上图更清晰 15:11:10 Application Server was not connected before run configuration stop, reason: Unable ...