添加textarea(int)值

时间:2012-07-30 11:26:38

标签: jquery

我的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);
                });
            });
        });
    });

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

任何人?

提前致谢!

3 个答案:

答案 0 :(得分:0)

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

var total = 0;

$('.pack_check').click(function() {
  if ($(this).is(':checked')) {
    total += parseInt(this_count);
  } else {
    total -= parseInt(this_count);
  }
});

答案 1 :(得分: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

答案 2 :(得分: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) - 如果字符串以前导0开头,则可以避免出现问题领先0x,否则将被解释为基数8和基数16(分别)。

话虽如此,我建议使用unary plus运算符将字符串转换为数字:

total += +this;