0

我的 jQuery / Javascript 代码遇到了一个小问题。

我在一个页面上有几个值,例如:

checkbox EXAMPLE EXAMPLE 150
checkbox EXAMPLE EXAMPLE 300
checkbox EXAMPLE EXAMPLE 300

我有这个小代码,它基本上只是将数值(150、300、300)添加到一个数组中,然后在“total”变量中对数组求和。(嗯,至少这是我想要做的......)

这是代码:

 $('.pack_check').click(function() {
        var cout = [];
        total = 0;
        $('#services_pack input:checked').each(function() {
            cout.push(this.cout);
            $.each(cout,function() {
                total += parseInt(this);
                });
            });
        });
    });

我的问题是,当我点击我的第一个复选框时,没关系,total = 150 但是,如果我点击第二个复选框,total = (150 + 150 + 300) 这有点烦人......

任何人 ?

提前致谢 !

4

3 回答 3

0

您有全局“总计”,仅由选中/未选中复选框计数的值更改。

var total = 0;

$('.pack_check').click(function() {
  if ($(this).is(':checked')) {
    total += parseInt(this_count);
  } else {
    total -= parseInt(this_count);
  }
});
于 2012-07-30T11:33:28.150 回答
0

拆分你的.each()函数,发生的事情是你的代码将 150 添加到 cout 然后添加到总数,然后在第二次通过时它再次将 150 和 300 添加到当前总数,因此是 150 + 150 +300。它应该如下:

$('.pack_check').click(function() {
    //adds to array
    var cout = [];
    $('#services_pack input:checked').each(function() {
        cout.push(this.cout);
        });

    //totals all within the array
    total = 0;
    $.each(cout,function() {
         total += parseInt(this);
        });
    }); // end of click function
于 2012-07-30T11:36:28.273 回答
0

问题很可能是您的总数中有一个嵌套循环。因此,对于每个选中的复选框,您首先将其添加.cout到数组中,然后将数组中的每个元素再次添加到总数中。另外你有太多的关闭});。试试这个:

$('.pack_check').click(function() {
    var cout = [];
    total = 0;
    $('#services_pack input:checked').each(function() {
        cout.push(this.cout);
    });
    $.each(cout,function() {
        total += parseInt(this, 10);
    });
    // do something with total
});

或者,如果您只需要完全消除cout数组:

$('.pack_check').click(function() {
    var total = 0;
    $('#services_pack input:checked').each(function() {
        total += parseInt(this.cout, 10);
    });
    // use total here
});

请注意,它parseInt()需要第二个参数来指定基数,因此如果您想在基数 10 中工作: - 如果字符串以前导或前导parseInt(stringToParse,10)开头,则避免出现问题,否则将被解释为基数 8 和基数 16(分别)。00x

话虽如此,我推荐一元加号运算符将字符串转换为数字:

total += +this;
于 2012-07-30T11:38:11.377 回答