博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript动态合并纵向单元格
阅读量:6804 次
发布时间:2019-06-26

本文共 1587 字,大约阅读时间需要 5 分钟。

1.需求

合并相邻行内容相同的单元格。

2.概念

rowspan指定单元格纵向跨越的行数。如rowspan被设为3,这表示该单元格必须跨越三行(本身一行,加上另外两行)

3.公共方法

/**   * 单元格合并方法,增加rowspan属性   * @param data 要处理的数据   * @param nameList 合并的字段list   */function rowspanFun(data, nameList) {    for (var i = 0; i < nameList.length; i++) {      var name = nameList[i];      var startRow = 0;      var endRow = data.length;      var mergeNum = 1;      if (endRow != 1) {        for (var j = startRow; j < endRow; j++) {          if (j == endRow - 1) { //判断是否是最后一个元素            if (startRow == endRow - 1) {              data[j][name + 'Rowspan'] = 1;            }          } else {            if (data[startRow][name] == data[j + 1][name]) {              data[j + 1][name + 'Rowspan'] = 0;              mergeNum = mergeNum + 1;              data[startRow][name + 'Rowspan'] =mergeNum;            } else {              startRow = j + 1;              if (mergeNum > 1) {                data[startRow][name + 'Rowspan'] = 1;              } else {                data[j][name + 'Rowspan'] = 1;              }              mergeNum = 1;            }          }        }      } else {        data[0][name + 'Rowspan'] = 1;      }    }    return data;  }

4.js中调用公共方法

var data =  [      {name: 'dwj', sex: '女', age: 20},      {name: 'dwj', sex: '男', age: 20},      {name: 'dwq', sex: '女', age: 20},      {name: 'other', sex: '女', age: 20}    ];rowspanFun(data, ['name', 'sex']);

调用方法后的数据处理结果

clipboard.png

5.html中使用

{
{item.name}}
{
{item.sex}}
{
{item.age}}

注意:此html代码使用的是ng语法,请根据自已使用的js框架自行调整。

6.结果

clipboard.png

转载地址:http://bunwl.baihongyu.com/

你可能感兴趣的文章
写给要买Surface的各位兄弟
查看>>
汤姆大叔设计模式学习体会:设计模式的思想
查看>>
VS Code快捷键
查看>>
VUE 项目dependency was not found: * !!vue-style-loader!css-loader? 解决方案
查看>>
springmvc 自定义拦截器
查看>>
Linux中内存挂载到目录下
查看>>
【转】MyEclipse 9.0正式版官网下载(附Win+Llinux激活方法、汉化包)
查看>>
HDU 5794 - A Simple Chess
查看>>
Topology and Geometry in OpenCascade-Vertex
查看>>
Create views of OpenCASCADE objects in the Debugger
查看>>
解决Android版Firefox字体显示过大的问题
查看>>
使用new Vue实例的 components 属性定义 私有组件 login
查看>>
[C++]一份Linq to object的C++实现
查看>>
Linux相关的入门命令
查看>>
Android 关于ijkplayer
查看>>
LVS介绍与部署
查看>>
【Lolttery】项目开发日志 - (三)维护好一个项目好难
查看>>
数据库面试题
查看>>
C#的OpenFileDialog和SaveFileDialog的常见用法(转)
查看>>
(转)详解C#中的反射
查看>>