我的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),这有点烦人......
任何人?
提前致谢!
答案 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;