700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Layui之表格单元格合并

Layui之表格单元格合并

时间:2019-01-29 09:29:47

相关推荐

Layui之表格单元格合并

前言

layui是一个不错的后台UI框架,最近一直在学习。但是它原来的表格不支持单元格合并。比如项目这一列,有相同的行,我们就需要合并一下。

就像是这样:

一、实现

我们需要在表格实例化之后再对其样式进行修改,因此我们需要写个函数,在表格render后的done函数里调用。

/*** name layuiRowspan* @param fieldName 要合并列的field属性值* @param index 要合并列的索引值 从1开始(如果要合并第一列,则index = 1;) * @desc 此方法适用于合并列冻结的单元格*/function layuiRowspan(fieldName,index){// 左侧列为冻结的情况var tbodyNode = document.getElementsByClassName("layui-table-fixed-l")[index-1];var child = tbodyNode.getElementsByTagName("td");var childFilterArr = [];// 获取data-field属性为fieldName的tdfor(var i = 0; i < child.length; i++){if(child[i].getAttribute("data-field") == fieldName){childFilterArr.push(child[i]);}}// 获取td的个数和种类var childFilterTextObj = {};for(var i = 0; i < childFilterArr.length; i++){var childText = childFilterArr[i].textContent;if(childFilterTextObj[childText] == undefined){childFilterTextObj[childText] = 1;}else{var num = childFilterTextObj[childText];childFilterTextObj[childText] = num*1 + 1;}}// 给获取到的td设置合并单元格属性for(var key in childFilterTextObj){var tdNum = childFilterTextObj[key];var canRowspan = true;for(var i = 0; i < childFilterArr.length; i++){if(childFilterArr[i].getAttribute("data-content") == key){if(canRowspan){childFilterArr[i].setAttribute("rowspan",tdNum);canRowspan = false;}else{childFilterArr[i].style.display = "none";}}}}}/*** name layui合并tbody中单元格的方法* @param fieldName 要合并列的field属性值* @param index 表格的索引值 从1开始* @desc 此方式适用于没有列冻结的单元格合并*/function alarmTableRowSpan(fieldName, index) {var fixedNode = document.getElementsByClassName("layui-table-body")[index - 1];if (!fixedNode) {return false;}var child = fixedNode.getElementsByTagName("td");var childFilterArr = [];// 获取data-field属性为fieldName的tdfor (var i = 0; i < child.length; i++) {if (child[i].getAttribute("data-field") == fieldName) {childFilterArr.push(child[i]);}}// 获取td的个数和种类var childFilterTextObj = {};for (var i = 0; i < childFilterArr.length; i++) {var childText = childFilterArr[i].textContent;if (childFilterTextObj[childText] == undefined) {childFilterTextObj[childText] = 1;} else {var num = childFilterTextObj[childText];childFilterTextObj[childText] = num * 1 + 1;}}// 给获取到的td设置合并单元格属性for (var key in childFilterTextObj) {var tdNum = childFilterTextObj[key];var canRowSpan = true;for (var i = 0; i < childFilterArr.length; i++) {if (childFilterArr[i].textContent == key) {if (canRowSpan) {childFilterArr[i].setAttribute("rowspan", tdNum);canRowSpan = false;} else {childFilterArr[i].style.display = "none";}}}}}

接下来就是在done里调用就可以了。

写在最后的话

一直在学习

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。