javascript代码实例教程-JS动态生成表格后 合并单元格

发布时间:2019-02-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JS动态生成表格后 合并单元格脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单元格操作,在做之前也试着GOOGLE下,但是网上没有碰到这方面的需求,所以自己写了一个简单的。 

  

 

如上所示:是根据相邻的编号相同 进行单元格合并。

 

先看看实现后的效果再聊吧!

 

JSfiddle链接地址如下:

 

 点击我查看效果!

 

实现思路: 动态生成数据,那么需要合并的单元格先不动态生成,等数据渲染完成后,再去做如下操作:

 

 1. 遍历所有tr标签,获取所有的编号存入数组里面去,并且对数组进行去重操作。

 

 2. 循环去重后的新数组,再去循环tr标签,分别获取当前tr上的编号和长度属性,然后tr中的编号与循环后的新数组某项是否相等,如果相等的话,那么在当前的tr前插入td单元格且加上rowspan属性。

 

 3. 使用break语句,跳出当前的for循环,进入新数组下一次循环,目的是:只取tr相同的项的第一项插入合并后的单元格。

 

 HTML代码在此不贴代码,要看的话 去jsfiddle效果里面去看。

 

所有JS代码如下:

 

复制代码

//去掉数组重复项

   function unique(arr){

        arr = arr || [];

        VAR obj = {},

            ret = [];

        for(var i = 0, ilen = arr.length; i < ilen; i+=1) {

            var curITem = arr[i],

                curItemTyPE = typeof(curItem) + curItem;

            if(obj[curItemType] !== 1) {

                ret.push(curItem);

                obj[curItemType] = 1;

            }

        }

        return ret;

    }

    /**

    $.ajax({

        

    });**/

    // 假如返回数据如下:

    var data = [{&#39;key':[{'num1':'001','n2':'4','n3':'5'}]},

                {'key':[{'num1':'002','n2':'44','n3':'55'},{'num1':'002','n2':'44','n3':'55'}]},

                {'key':[{'num1':'003','n2':'444','n3':'555'},{'num1':'003','n2':'444','n3':'555'}]},

                {'key':[{'num1':'004','n2':'666','n3':'666'},{'num1':'004','n2':'666','n3':'666'}]}

               ];

        htML = "";

    

    $('#j-tbody').html('');

    for(var i = 0; i < data.length; i++) {

        

        for(var j = 0; j < data[i].key.length; j++) {

            html += '<tr class="j-number" data-num="'+data[i].key[j].num1+'" data-len="'+data[i].key.length+'">'+

                      /*'<td>'+data[i].key[j].num1+'</td>'+ */

                      '<td>'+data[i].key[j].n2+'</td>'+

                      '<td>'+data[i].key[j].n3+'</td>'+

                    '</tr>';

        }

    }

    $("#j-tbody").html(html);

 

    var rets = [];

    // 遍历tr 获取属性 data-num 

    $('.j-number').each(function(){

        var num = $(this).attr('data-num');

        rets.push(num);

    });

    var newArrs = unique(rets),

        domElems = $('.j-number');

    

    // 再次遍历新数组

    for(var m = 0; m < newArrs.length; m++) {

        for(var n = 0; n < domElems.length; n++) {

            var elemNum = $(domElems[n]).attr('data-num'),

                elemLen = $(domElems[n]).attr('data-len');

            if(newArrs[m] == elemNum) {

                var td = '<td rowspan="'+elemLen+'">'+elemNum+'</td>';

                $(domElems[n]).PRepend(td);

                break;

            }

        }

    }

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JS动态生成表格后 合并单元格全部内容,希望文章能够帮你解决javascript代码实例教程-JS动态生成表格后 合并单元格所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。