layui多行合并

样例

js代码

layui框架代码

table.render({elem: '#LAY_table_user', url: 'json/p-mulu-table.json', cols: [[{field: 'a', title: '序号'}, {field: 'b', title: '应用场景'}, {field: 'c', title: '指标名称'}, {field: 'd', title: '定义描述'}]], id: 'testReload',done:function(res,curr,count){layuiRowspan('a',1);layuiRowspan(['b','c','d'],1);//支持数组layuiRowspan("8",1,true);}

done回调函数为新增代码;调用函数如下
长篇代码预警!!

var execRowspan = function(fieldName,index,flag){// 1为不冻结的情况,左侧列为冻结的情况let fixedNode = index=="1"?$(".layui-table-body")[index - 1]:(index=="3"?$(".layui-table-fixed-r"):$(".layui-table-fixed-l"));// 左侧导航栏不冻结的情况let child = $(fixedNode).find("td");let childFilterArr = [];// 获取data-field属性为fieldName的tdfor(let i = 0; i < child.length; i++){if(child[i].getAttribute("data-field") == fieldName){childFilterArr.push(child[i]);}}// 获取td的个数和种类let childFilterTextObj = {};for(let i = 0; i < childFilterArr.length; i++){let childText = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;if(childFilterTextObj[childText] == undefined){childFilterTextObj[childText] = 1;}else{let num = childFilterTextObj[childText];childFilterTextObj[childText] = num*1 + 1;}}let canRowspan = true;let maxNum;//以前列单元格为基础获取的最大合并数let finalNextIndex;//获取其下第一个不合并单元格的indexlet finalNextKey;//获取其下第一个不合并单元格的值for(let i = 0; i < childFilterArr.length; i++){(maxNum>9000||!maxNum)&&(maxNum = $(childFilterArr[i]).prev().attr("rowspan")&&fieldName!="8"?$(childFilterArr[i]).prev().attr("rowspan"):9999);let key = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;//获取下一个单元格的值let nextIndex = i+1;let tdNum = childFilterTextObj[key];let curNum = maxNum<tdNum?maxNum:tdNum;if(canRowspan){for(let j =1;j<=curNum&&(i+j<childFilterArr.length);){//循环获取最终合并数及finalNext的index和keyfinalNextKey = flag?childFilterArr[i+j].innerHTML:childFilterArr[i+j].textContent;finalNextIndex = i+j;if((key!=finalNextKey&&curNum>1)||maxNum == j){canRowspan = true;curNum = j;break;}j++;if((i+j)==childFilterArr.length){finalNextKey=undefined;finalNextIndex=i+j;break;}}childFilterArr[i].setAttribute("rowspan",curNum);if($(childFilterArr[i]).find("div.rowspan").length>0){//设置td内的div.rowspan高度适应合并后的高度$(childFilterArr[i]).find("div.rowspan").parent("div.layui-table-cell").addClass("rowspanParent");$(childFilterArr[i]).find("div.layui-table-cell")[0].style.height= curNum*38-10 +"px";}canRowspan = false;}else{childFilterArr[i].style.display = "none";}if(--childFilterTextObj[key]==0|--maxNum==0|--curNum==0|(finalNextKey!=undefined&&nextIndex==finalNextIndex)){//||(finalNextKey!=undefined&&key!=finalNextKey)canRowspan = true;}}}//合并数据表格行var layuiRowspan = function(fieldNameTmp,index,flag){let fieldName = [];if(typeof fieldNameTmp == "string"){fieldName.push(fieldNameTmp);}else{fieldName = fieldName.concat(fieldNameTmp);}for(let i = 0;i<fieldName.length;i++){execRowspan(fieldName[i],index,flag);}}

复制到本地即可用。

加油加油加油!

layui多行合并,附示例代码相关推荐

  1. 怎么把竖列中的数相加python_关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码...

    pandas是python环境下最有名的数据统计包,而DataFrame翻译为数据框,是一种数据组织方式,这篇文章主要给大家介绍了关于python中pandas.DataFrame对行与列求和及添加新 ...

  2. 如何实现在Windows上运行Linux程序,附示例代码

    如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On ...

  3. table多行表头合并 vue_vue elementUI table 自定义表头和行合并的实例代码

    最近项目中做表格比较多,对element表格的使用,只需要传递进去数据,然后写死表头即可渲染. 但现实中应用中,如果写死表头,并且每个组件中写自己的表格,不仅浪费时间而且消耗性能.这个时候需要动态渲染 ...

  4. OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,它们各自的算法原理、特点是什么,并附示例代码

    关于OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,汇总如下: 上面的汇总不仅显示了OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,还显示了它们的继承. ...

  5. layui表格行合并

    先看一下最终合并之后的效果,能对单选.复选框进行按照某一列的合并. 最开始的解决方案来自于这篇博客介绍的方法:https://blog.csdn.net/guishifoxin/article/det ...

  6. python基础代码事例-数据科学Python基础(附示例代码和练习题目)

    翻译 | AI科技大本营 参与 | 王珂凝 审校 | reason_W [AI科技大本营导读]Python的强大和灵活相信已经毋庸置疑了.那么数据科学中,我们又需要掌握哪些基础知识点才能满足使用需求呢 ...

  7. Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载

    场景 经常会有后台服务向Android推送消息通知的情况. 实现 首先在Android Studio中新建一个Android应用 在Project根目录的build.gradle中配置了jcenter ...

  8. Jquery中使用table2excel插件实现将Html的table导出为Excel(附示例代码和资源下载)

    场景 jquery-table2excel是一款可以将HTML表格的内容导出到微软Excel电子表格中的jQuery插件. 效果 在Html中有一个表格 点击导出按钮 将其导出后 注: 博客: htt ...

  9. java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)

    首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...

最新文章

  1. 壕!甲骨文创始人 8000 万美元买豪宅后打算拆掉
  2. android 上传pdf文件,Android 加载PDF文件
  3. java通过ftp方式上传_通过FTP以Java方式上传文件
  4. DIP第三章习题解答
  5. JSP 防止网页刷新重复提交数据
  6. Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
  7. python人工智能——机器学习——分类算法-k近邻算法——kaggle案例: Facebook V: Predicting Check Ins
  8. thinkphp路由的作用
  9. pandas-数据分析
  10. 不等式约束的拉格朗日乘数法_Abaqus血管支架仿真|接触约束执行方式
  11. 2万字,看完这篇才敢说自己真的懂线程池!
  12. 最大概率法分词及性能測试
  13. 云计算:大数据时代的系统工程
  14. 1.4 Flink HDFS Connector /Flink HDFS连接器
  15. HDOJ1003 MaxSum【逆推】
  16. 使用PS蒙版功能去水印以及Word中的图片合并功能合并公司Logo图片
  17. android写出资源文件,Android 读取Assets下的资源文件
  18. 微信小程序获取微信用户步数
  19. 图解机器学习-稀疏学习-matlab源码
  20. 机器学习中的无监督学习是什么?

热门文章

  1. HTML5期末大作业 基于HTML+CSS+JavaScript学校校园
  2. C语言I———作业04
  3. JAVA开发管理(敏捷管理具体工作细节)
  4. 群晖root权限获取(自用)
  5. android广播怎样运行在子线程,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
  6. 2023年美赛F题F奖思路复盘(附论文)
  7. ROS如何进行开发?
  8. 东南大学计算机学院伍家松老师,伍家松
  9. js打印html页面中的指定内容?
  10. PyTorch最佳实践,教你写出一手风格优美的代码