项目中经常使用的一个功能就是把排序之后的表格进行单元格的合并,一般是列的合并.
之前使用的方法是在后台进行html拼串,结果造成后台及其复杂,可维护性很差.
自己的想法就是在画完了表格之后再修改表格的结果,添加rowspan属性达到合并单元格的目的.
思路:
假如表格列数据依次是A,A,A,B,B,B,C,C,C
显示表格完之后,进行逐行进行查找得到这样的一个数组[3,3,3]
,表示重复的单元格的次数,然后在进行一次循环,再根据这里的数组里面的数字进行处理,将第一个遇到的单元格设置rowspan属性,剩余的重复的单元格remove掉...有点小小复杂的算法.
用jquery写完之后,到网上搜了一下,才发现有普通的js的版本的,看了一下,思路基本差不多.这里把我写的jquery的版本代码粘贴出来,附件有两个版本的网页.
/**
* willcheck:要进行处理的表格对象(或者行的集合即可)
* colnum:要进行合并单元格的列
*/
function coltogather(willcheck,colnum){
var alltext = [],togotherNum = [],oldnum = [],id=1,lasttext=null,rmflag=1;
//逐列的数据进行扫描,得到里面的不重复的数据,以及各个数据的数目,然后将依据此结果进行设置rowspan属性
willcheck.each(function(){
var _rmnum = this.getAttribute('rmnum');
if(!_rmnum)_rmnum=0;
var trdom= jQuery('td:eq('+(colnum-_rmnum)+')',this)
var text = jQuery(trdom).text();
//如果上一行记录文本为空,说明是第一行
if(lasttext==null) {
lasttext = text;
}else {
//如果当前行和上一行记录一样,说明要进行合并,合并的单元格数目就加1
if(lasttext!=text){
togotherNum.push(id);
lasttext = text;
id = 1;
} else{
id++;
}
}
});
togotherNum.push(id);
//复制allnum数组中的数据到oldnum数组
jQuery.each(togotherNum, function(i, n){
oldnum[i] =n;
});
var index = 0,len = togotherNum.length;
//逐行进行处理,设置指定列的rowspan属性,以及将要合并的单元格remove!
willcheck.each(function() {
// 得到一个属性表示该行已经被移除了几个td
var _rmnum = this.getAttribute('rmnum');
if (!_rmnum)
_rmnum = 0;
var tddom = jQuery('td:eq(' + (colnum - _rmnum) + ')', this)
if (togotherNum[index] == oldnum[index]) {
tddom.attr('rowSpan', togotherNum[index]);
if(togotherNum[index]>1)
togotherNum[index] = togotherNum[index] - 1;
else
index++;
} else {
if (togotherNum[index] == 0) {
index++;
tddom.attr('rowSpan', togotherNum[index]);
} else {
tddom.remove();
if(--togotherNum[index]==0){
index++;
}
}
// 移除了td之后,要在tr里面添加一个属性标示已经移除的td的数目
if (_rmnum == 0) {
jQuery(this).attr('rmnum', 1);
} else {
jQuery(this).attr('rmnum', 1 + _rmnum * 1);
}
}
});
//清空数组
alltext = null;
togotherNum = null;
oldnum = null;
}
全部的可执行网页见附件.
感觉没有必要总是使用jquery做这些事情,因为可以看到普通的js一样可以处理很多的事情,用jquery的话有点杀鸡用牛刀了,不过jquery确实很方便.
分享到:
相关推荐
通过Datatables的`drawCallback`或`initComplete`事件,在表格渲染完成后合并单元格。遍历预处理得到的合并信息,使用DOM操作修改表格结构。 ```javascript $('#example').DataTable({ // ...其他配置... ...
在压缩包中的"jquery合并单元格"文件可能包含了具体的示例代码或者更复杂的合并功能实现。通过查看和学习这些示例,你可以进一步理解和掌握如何使用jQuery实现单元格合并。同时,为了保证代码的可维护性和性能,记得...
"jQuery合并单元格"这个主题涉及到在HTML表格中合并单元格的技术,这对于创建复杂的表格布局或呈现数据时非常有用。下面我们将深入探讨如何使用jQuery和JavaScript实现单元格的合并。 首先,我们需要理解HTML表格的...
////table中指定行第N列合并单元格(合并后会多出一列,删除N+1单元格即可) var tds = $("#dgList .TableHeader1").find('td'); tds[6].setAttribute("colSpan", "2"); 还可以写成:tds[6].attr("rowSpan", 2);
下面是一个简单的例子,展示了如何使用jQuery合并单元格: ```html <!DOCTYPE html> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <td>Header 1 <td>Header 2 <td>Header 3 ...
jquery封装超好用的合并单元格方法,很好用,欢迎大家下载使用。
jqgrid合并单元格 .jqgrid { width: 80%; margin: 0 auto; } /* 这个代码是解决表头有一点点错位的问题 */ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-...
在表格(Table)设计中,有时我们需要合并单元格来达到特定的展示效果,例如创建标题行或列,或者为了美观和布局对齐。在HTML、CSS以及JavaScript中,都有多种方式可以实现单元格的合并。这里我们将详细探讨六种合并...
合并单元格 JQuery源码 MergeCells 加入JQuery库和MergeCells即可. EP: $('#table').MergeCells({cols:'1,2,3'}) 合并第2,3,4列.
`jQuery.table.rowspan.js`插件的核心思想是遍历表格中的每一行,根据设定的规则(如相同的值或特定条件)来检测是否需要合并单元格,并动态设置`rowspan`属性。这样,原本需要在服务器端进行的复杂逻辑计算,被转移...
本项目提供了一个解决方案,它支持合并单元格和合并行,无需依赖Microsoft Office,这对于那些无法安装Office环境或者希望在服务器端执行此操作的用户来说,具有很高的实用价值。 首先,我们要理解HTML表格...
在描述中提到的"bootstrap-table导出合并单元格"是该插件的一个高级特性,允许用户在导出表格时,将具有相同内容的单元格进行合并,以提高数据的可读性和美观性。 1. **Bootstrap Table简介** Bootstrap Table是一...
3. 合并单元格:如果需要合并单元格,可以调用`Sheet`对象的`mergeCells()`方法,指定起始和结束的单元格坐标。 4. 保存和导出:完成数据填充和合并后,调用`Workbook`对象的`write()`方法将工作簿写入到输出流,...
在网页开发中,jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了 JavaScript 的操作,包括对 HTML 文档的处理、事件处理、动画效果以及Ajax交互。在这个“jquery table rowspan 表格单元格合并Demo.zip”中,...
向下合并单元格是指在表格中,如果连续几行具有相同的特定列值,那么这些行的该列会被合并成一个单元格,其内容是这些行共享的值,而下方的行则被隐藏。这种操作有助于减少重复信息,使得表格看起来更有序,提升...
每次遍历时都会更新计数器 `count`,用于记录合并单元格所占据的行数。 ```javascript count++; ``` #### 三、JSP 示例代码解析 在 JSP 文件中,使用 `<s:iterator>` 标签来迭代列表,并为每个元素生成一个表格行...
在网页开发中,jQuery 是一个非常流行的 JavaScript 库,它简化了 DOM 操作、事件处理以及动画效果。本文将探讨如何使用 jQuery 来合并表格中相同文本的相邻单元格,这是在展示数据时提高可读性和美观度的一种常见...
本压缩包“jqgrid合并单元格.rar”提供了一个解决方案,用于在jqGrid中实现单元格的合并,包括行合并和列合并,使得数据展示更为清晰、有组织。 首先,jqGrid的单元格合并功能主要通过设置表格的colModel属性和grid...
合并单元格主要是指将具有相同内容的相邻单元格(通常为垂直方向)合并为一个单元格,同时设置`rowspan`属性来表示合并后的单元格跨越的行数。 #### 代码分析 给定的代码片段展示了如何使用jQuery动态地合并表格中...