2013.12.04 JS实现单元格的合并


内容见:《合并内容相同的单元格

核心js:

merge2(3);merge2(2);merge2(1);merge2(0);
// 问:为什么要先处理1,再处理0呢?
// 答:如果先处理0这一列,则第一次处理结束之后,会删除一部分<td>标签,
//   则第二列部分<td>标签会成为第一列,这将影响下次对第二列的处理;相反
//   如果先处理1,即处理第二列,处理完成之后,第三列部分数据会成为第二列
//     数据,但是这对第一列的数据并没有影响
// index为列的下标
// 合并内容相等的相邻列
// 合并原理:如果相邻列相等,则计数器加1,直到相邻列不相等,则合并
function merge2(index) {
var count = 0;// 计数器
var $firstTd = $('table.merge2 tr td:eq(' + index + ')');// 第一行指定列作为目标列
var firstContent = $firstTd.text();
$('table.merge2 tr').each(function(i) {// 遍历每一行,取得指定列的值
$secondTd = $(this).find('td:eq(' + index + ')');
var secondContent = $secondTd.text();
if(firstContent == secondContent) {// 值相等
count ++;
if(count > 1) {// count > 1表示,已经至少有2列值相等,则需要先移除重复的一列,然后合并
$secondTd.remove();
$firstTd.attr('rowspan',count);
}
} else { // 值不等,将此时的值作为目标值,进入到下一轮比较
count=1;
firstContent = secondContent;
$firstTd = $secondTd;
}
});
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭