动态创建的表jQuery中列的总和

时间:2014-08-30 22:35:35

标签: jquery

我只是在学习jQuery。 我需要使用jQuery动态创建一个表,它工作正常。问题是我需要一个sum字段,它根据新添加的行自动更新。 我在这方面取得了成功,但它在新行的值上添加了已经总和的值。 现在我添加了一个按钮,当我点击它时,总和值是正确的,但是第二次击中它会在结果上添加所有行...

这是我的代码:

  <table id="packagetopack">
        <thead><tr class="titlerow">
            <th style="height:60px;vertical-align: middle">Artikel</th>
            <th style="height:60px;vertical-align: middle"> Menge</th>
            <th style="height:60px;vertical-align: middle"> Volumen</th>
        </tr></thead>
        <tbody>
<tr class="totalrow"><td class="totalCol"></td><td class="totalCol"></td><td class="totalCol"></td></tr>
        </tbody>
    </table>

和jQuery:

  $('#mengeneingabe').click(function() {
        $('#packagetab').show();
        var productName;
        productName = $('#selectionbox').val();
        var productQuant;
        productQuant = $('#mengeneingabe').val();
        var productvolume;
        productvolume = $('#volumen').html();
        var volumetotal;
        volumetotal = productvolume * productQuant;
        var result = volumetotal.toFixed(2);
        $('#packagetopack > tbody:last').append('<tr><td class="rowDataSd">'+productName+'</td><td class="rowDataSd">'+productQuant+'</td><td class="rowDataSd">'+result+'</tr>');
    });

    var totals=[0,0,0];
    $('#berechnenbutton').click(function(){

        var $dataRows=$("#packagetopack tr:not('.totalrow, .titlerow')");

        $dataRows.each(function() {
            $(this).find('.rowDataSd').each(function(i){
                totals[i]+=parseFloat( $(this).html());
            });
        });
        $("#packagetopack td.totalCol").each(function(i){
            $(this).html("total:"+totals[i]);
        });

    });

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

变量总数应该在你的函数范围内,如下所示:

$('#berechnenbutton').click(function(){
    var totals=[0,0,0];

这样每次通话都会启动。