JS实现table动态列自动合计

相信大家在项目中总会遇到统计功能(列的合计和行的合计)

下面为大家讲解下table中实现动态列的合计。

上方的统计是我这边的效果图。下面为大家贴上详细的代码

因为系统用的代码比较老旧,这里使用的是Struts框架

事件类别后面的标题是动态显示的,相信这个大家都会使用,就不详细讲解了。

在下方Map里面有个for循环,这个是根据上面的标题,标题有多少个,那就产生多少列,同时依靠J给这些列生成动态的class名称,因为我的列是从第2列开始计算,故这里我的class名称省略掉了0和1

function load(){
        var tab=document.getElementById("tab");
        var rows=tab.rows;
        var baseSum=0;
		var total = rows[1].cells;
        var sum=0;
        for(var i = 2; i < total.length-1; i++){
        	//动态class名
        	var cla = ".sum"+i;
        	var tol = ".total"+i;
        	 $(".sum").each(function(){
    			var base=$(this).find(tol).text();
    				baseSum+=parseInt(base);
    		});
    		
        	$(cla).text(baseSum);
        	baseSum = 0;
        }
        
     }

上方的代码中,document.getElementById("tab");

相信这个代码大家都是知道的,获取table表格。

var rows = tab.rows;

获取table的所有行,这时rows是数字类型

var total = rows[1].cells;

获取第一行列的总计。也就是获取总共多少列。

for(var i = 2; i < total.length-1; i++){
        	//动态class名
        	var cla = ".sum"+i;
        	var tol = ".total"+i;
        	 $(".sum").each(function(){
    			var base=$(this).find(tol).text();
    				baseSum+=parseInt(base);
    		});
    		
        	$(cla).text(baseSum);
        	baseSum = 0;
        }

for循环,从第2列开始循环,因为我的第0列和第1列分别是序号和类别,小于列的总计-1,因为我的最后一列合计是不用统计的,这个只统计第3列至倒数第2列,如果您的需要统计最后一列,把-1去掉即可。

同时,生成动态的class名称,和table里面的class名称一定要对应。

进行each遍历所有的td列进行相加,$(this),指当前,find(tol),tol就是你的动态class名,也就是你的需要合计的td。

baseSum,将遍历出来的数值进行相加。最后复制给最后一行的合计,同时把baseSum清零,不然得到的数值就是从第一列一直到最后一列的和,而不是每一列的合

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值