在页面进行数据展示时,经常遇到要合并相同行的问题,例如:
A(学生姓名) B(课程)
张三 英语
李四 数学
李四 语文
李四 理论力学
王五 基本力学
王五 量子力学
张三 热力学
现在我们需要将学生姓名临近相同的进行合并,可以这样通过jquery来实现(注:我的项目中jquery对象名称是不用加$的):
$(function(){
var name=$("table tr td.1");//获取td数组jquery对象
cols(name);
});
//合并某一值相同行方法
function cols(tds){
var combine =0;//要合并的列
var index1 =1;//合并的列数
var eq='';//用于临近两行的判断值是否相等
for(var a=0;a<tds.length;a++){
if(a==0){
eq=$(tds[a]).text();
}else{
//关键
if(eq==$(tds[a]).text()){
combine=a-index1;//获取要合并的列
index1++;//增加合并行
}else{
//设置要合并列的值
if(combine==-1){//即未经过if赋值
combine=a-1;
}
//操作table
$(tds[combine]).attr("rowspan",index1);
for(var b=1;b<index1;b++){
$(tds[combine+b]).remove();
}
index1=1;//重置合并行值
combine=-1;//重置要合并的列
eq=$(tds[a]).text();//重置eq往下判断
}
//当数据到结尾时将最后一次的判断合并,因else中的方法不一定执行
if(a==tds.length-1){
$(tds[combine]).attr("rowspan",index1);
for(var b=1;b<index1;b++){
$(tds[combine+b]).remove();
}
}
}
}
}
对应的html页面table表格:
<html>
<body>
<table>
<tr><td class="1">张三</td><td class="2">英语</td></tr>
<tr><td class="1">李四</td><td class="2">数学</td></tr>
<tr><td class="1">李四</td><td class="2">语文</td></tr>
<tr><td class="1">李四</td><td class="2">理论力学</td></tr>
<tr><td class="1">王五</td><td class="2">基本力学</td></tr>
<tr><td class="1">王五</td><td class="2">量子力学</td></tr>
<tr><td class="1">张三</td><td class="2">热力学</td></tr>
</table>
</body>
</html>
特别说明:该合并行的方法是一种对于单列的一种普适方法,它主要用于从后台传到页面是一个list的合并行的处理(处理方法:先将list集合先在页面做普通展示,然后再进行合并行的处理)