javascript动态合并纵向单元格

时间: 2019-02-12阅读: 1256标签: 表格

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']);

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


5.html中使用

<table>
    <tr *ngFor="let item of data">
      <td *ngIf="item.nameRowspan != 0" [attr.rowspan]='item.nameRowspan'>{{item.name}}</td>
      <td *ngIf="item.sexRowspan != 0" [attr.rowspan]='item.sexRowspan'>{{item.sex}}</td>
      <td>{{item.age}}</td>
    </tr>
  </table>

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


6.结果


来自:https://segmentfault.com/a/1190000018128208


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1995

关闭

html中<table>标签的各种属性介绍_table的使用

在html中一个table表单主要由tr、td、th元素组成,比较复杂一点的表单还会包含caption、 col、 colgroup、 thead、tfoot、 tbody等元素. 这篇文章主要介绍<table>标签的各种属性的使用

通过css样式给表格tbody加垂直滚动条

tbody加滚动条实现思路:把tbody设置成display:block,然后就对其高度设置一个固定值,overflow设置成auto。把thead的tr设置成display:block。因为都设置成block所以要给td手动添加宽度。

css表格文字不换行怎么设置?

很多时候,我们在项目开发中会出现,单元格内容由于太多导致的换行问题,让表格显得非常的丑陋。下面我们来看一下使用css设置表格内文字不换行的方法。

js的Handsontable表格的使用说明,如何增加格子样式

最近使用到了html和js的表格插件Handsontable。非常流行的web应用程序的UI组件,可用于 各种技术,如React、Angular和Vue,它很容易与任何数据源集成并提供了各种有用的功能

cells在Javascript中有什么作用?

在Javascript中,cells可以获取表格中某一行所有单元格的集合,可以通过索引获取集合中的指定td单元格。下面本篇文章就来给大家介绍一下Javascript的cells,希望对大家有所帮助。

Bootstrap Table含有按钮时表格不对齐

使用Bootstrap Table的时候,在含有按钮的情况,有时候表格的线垂直方向上不对齐,调整表格的高度小些或者大些(至于为什么,并不清楚,调整高度后就对齐了)

Element 表格导出为Excel表格

安装xlsx和filesaver、在表格组件中引入安装的2个文件、HTML结构、导出的方法、在页面点击导出按钮时可以正常导出,但是如果左边有固定的列,相同的数据会导出2遍

CSS表格

表格的常用属性:1、边距属性padding(td的mrgin无效)2、边框属性border3、尺寸属性 width height4、文本格式 font-* text-* line-height5、背景属性 颜色,图片,渐变

怎么给tbody加滚动条?通过css样式给表格tbody加垂直滚动条

tbody加滚动条实现思路:1,把tbody设置成display:block,然后就对其高度设置一个固定值,overflow设置成auto。2,把thead的tr设置成display:block。3,因为都设置成block所以要给td手动添加宽度。4,考虑到 tbody 产生了滚动条,这设置::-webkit-scrollbar进行解决。

css中关于table的相关设置

设置好看的单边框表格:分别给table标签和td标签设置不在同一方向的border属性、给表格设置居中(表格整体居中、table文本居中),及文本居中、table的width和height设置、table文本格式设置

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广