这是我的代码,这里有6
个复选框,它会调用6
次,每次它都是两个值的总和,我传递的值就像它应该是10,10
一样20
,但会返回120
,
我该如何解决这个问题?
jQuery('.pricefield input').each( function() {
var checkedValues = jQuery('input:checkbox:checked').map(function() {
str=this.value;
source_str = str.substr(str.indexOf("#"));
keywords = source_str.split (/[\D,]+/);
val1=keywords[1];
val2=keywords[2];
sum+=parseInt(val1, 10)+parseInt(val2, 10);
alert(sum);
pricefield_both(sum);
}).get();
});
答案 0 :(得分:1)
您没有查看正确的索引,而您需要在#
之后再增加一个位置$(function() {
$('.pricefield input').on("click",function () {
var sum=0;
$('input:checkbox:checked').each(function () {
var str=$(this).val().split("#")[1].split(",");
sum += (parseInt(str[0], 10) + parseInt(str[1], 10));
});
pricefield_both(sum); // assuming that function works
});
});
答案 1 :(得分:-1)
keywords = source_str.split (/[\D,]+/);
val1=keywords[1];
val2=keywords[2];
sum+=parseInt(val1, 10)+parseInt(val2, 10);
这段代码不好!
尝试类似贝娄的事情!keywords = source_str.split(/[\D,]+/);
val1 = +keywords[1];
val2 = +keywords[2];
sum += val1 + val2;
我建议你先定义变量,这样局部变量就不会全局访问!
var str, source_str, keywords, val1, val2, sum;
结果如下:
var str, source_str, keywords, val1, val2, sum = 0;
jQuery('.pricefield input').each( function() {
var checkedValues = jQuery('input:checkbox:checked').map(function() {
str=this.value;
source_str = str.substr(str.indexOf("#"));
keywords = source_str.split (/[\D,]+/);
val1 = +keywords[1];
val2 = +keywords[2];
sum += val1 + val2;
alert(sum);
pricefield_both(sum);
}).get();
});