JQuery实现表格中相同单元格合并示例代码


Posted in Javascript onJune 26, 2013

代码:

<!DOCTYPE html> 
<html> 
<head> 
<title>merge.html</title> 
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="this is my page"> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<link rel="stylesheet" href="css/jquery-ui.css" /> 
<script src="js/jquery.js"></script> 
<script src="js/jquery-ui.js"></script> 
<script type="text/javascript"> 
function merge1(){ //可实现单元格,通过给 开始cell的比较 
var totalRow = $("#tbl").find("tr").length; 
var totalCol = $("#tbl").find("tr").eq(0).find("td").length; 
for(var col=totalCol-1;col>=1;col--){ 
spanNum =1; 
startCell = $("#tbl").find("tr").eq(totalRow-1).find("td").eq(col); 
for(var row = totalRow-1;row>=1;row--){ 
targetCell = $("#tbl").find("tr").eq(row-1).find("td").eq(col); 
if(startCell.text() == targetCell.text() && startCell.text()!=""){ 
spanNum++; 
targetCell.attr("rowSpan",spanNum); 
startCell.remove(); 
}else{ 
spanNum =1; 
} 
startCell = targetCell; 
} 
} 
} 
function merge2() { //可实现合并单元格,上下行来比较 
var totalCols = $("#tbl").find("tr:eq(0)").find("td").length; 
var totalRows = $("#tbl").find("tr").length; 
for ( var i = totalCols-1; i >= 1; i--) { 
for ( var j = totalRows-1; j >= 1; j--) { 
startCell = $("#tbl").find("tr").eq(j).find("td").eq(i); 
targetCell = $("#tbl").find("tr").eq(j - 1).find("td").eq(i); 
if (startCell.text() == targetCell.text() && targetCell.text() != "") { 
targetCell.attr("rowSpan", (startCell.attr("rowSpan")==undefined)?2:(eval(startCell.attr("rowSpan"))+1)); 
startCell.remove(); 
} 
} 
} 
} 
/*先合并,使用style 的display:none将相同元素隐藏,然后再remove 
*/ 
function merge3(){ 
var totalCols = $("#tbl").find("tr:eq(0)").find("td").length; 
var totalRows = $("#tbl").find("tr").length; 
for(var col=totalCols-1;col>=1;col--){ 
spanNum =1; 
startCell = $("#tbl").find("tr").eq(totalRows-1).find("td").eq(col); 
for(var row = totalRows-1;row>=1;row--){ 
targetCell = $("#tbl").find("tr").eq(row-1).find("td").eq(col); 
if(startCell.text() == targetCell.text() && startCell.text()!=""){ 
spanNum++; 
targetCell.attr("rowSpan",spanNum); 
startCell.attr("style","visibility:hidden"); 
// startCell.attr("style","display:none"); 
}else{ 
spanNum =1; 
} 
startCell = targetCell; 
} 
} 
for(var j=totalCols-1;j>=1;j--){ 
for(var i=totalRows-1;i>=1;i--){ 
cell = $("#tbl").find("tr").eq(i).find("td").eq(j); 
if(cell.attr("style")!=undefined){ 
if(cell.attr("style")=="visibility:hidden"){ 
cell.remove(); 
} 
} 
} 
} 
} 
function merge4(){ //与merge3方法类似,目的是看一下 display:none与visibility:hidden的效果区别 
var totalCols = $("#tbl").find("tr:eq(0)").find("td").length; 
var totalRows = $("#tbl").find("tr").length; 
for(var col=totalCols-1;col>=1;col--){ 
spanNum =1; 
startCell = $("#tbl").find("tr").eq(totalRows-1).find("td").eq(col); 
for(var row = totalRows-1;row>=1;row--){ 
targetCell = $("#tbl").find("tr").eq(row-1).find("td").eq(col); 
if(startCell.text() == targetCell.text() && startCell.text()!=""){ 
spanNum++; 
targetCell.attr("rowSpan",spanNum); 
startCell.attr("style","display:none"); 
// startCell.attr("style","display:none"); 
}else{ 
spanNum =1; 
} 
startCell = targetCell; 
} 
} 
for(var j=totalCols-1;j>=1;j--){ 
for(var i=totalRows-1;i>=1;i--){ 
cell = $("#tbl").find("tr").eq(i).find("td").eq(j); 
if(cell.attr("style")!=undefined){ 
if(cell.attr("style")=="display:none"){ 
cell.remove(); 
} 
} 
} 
} 
} 
</script> 
</head> 
<body> 
<table id="tbl" cellpadding="3" border=1> 
<thead> 
<tr> 
<td>销售时间</td> 
<td>裙子</td> 
<td>裤子</td> 
<td>风衣</td> 
<td>鞋子</td> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td>8:00-9:00</td> 
<td>3</td> 
<td></td> 
<td>4</td> 
<td></td> 
</tr> 
<tr> 
<td>9:00-10:00</td> 
<td>3</td> 
<td>2</td> 
<td>5</td> 
<td>3</td> 
</tr> 
<tr> 
<td>10:00-11:00</td> 
<td>3</td> 
<td>2</td> 
<td></td> 
<td>1</td> 
</tr> 
<tr> 
<td>11:00-12:00</td> 
<td></td> 
<td></td> 
<td></td> 
<td>1</td> 
</tr> 
</tbody> 
</table> 
<input type="button" value="合并" id="merge" onclick="merge2();"> 
</body> 
</html>

总结:在使用remove的时候,一定要注意如果 从list的开始元素循环下去,remove掉一个元素后,有些元素就找不到了或者说不是要找的那个元素;最好是从后面开始循环。
Javascript 相关文章推荐
Jquery下判断Id是否存在的代码
Jan 06 Javascript
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
Redis基本知识、安装、部署、配置笔记
Mar 05 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
Jun 23 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
如何让你的JS代码更好看易读
Dec 01 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 Javascript
JS制作简易计算器的实例代码
Jul 04 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 #Javascript
jQuery实现类似淘宝购物车全选状态示例
Jun 26 #Javascript
如何让页面加载完成后执行js
Jun 26 #Javascript
文件编码导致jquery失效的解决方法
Jun 26 #Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
Jun 26 #Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 #Javascript
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 #Javascript
You might like
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
python rsa 加密解密
2017/03/20 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python设置随机种子实例讲解
2019/09/12 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python在不同条件下的输入与输出
2020/02/13 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
西式婚礼证婚词
2014/01/12 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
新店开张活动方案
2014/08/24 职场文书
专家推荐信范文
2015/03/26 职场文书
思想工作总结范文
2015/08/12 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python