我有未知数量的输入字段,有类“添加”我只是想用jquery来总结这些,不知道我错在哪里。
<input name="add" class="add" type="text">
<input name="add" class="add" type="text">
<input name="add" class="add" type="text">
<input name="add" class="add" type="text">
<input type="button" value="" onClick="add()" />
`
function add(){
val = 0;
$(".add").each(function() {
str = (parseInt(this.value))
sum=str+str
});
alert (sum)
}
`
答案 0 :(得分:5)
您实际上从未在sum
中添加内容:
function add() {
var sum = 0;
$(".add").each(function() {
sum += +this.value;
});
return sum; // an add function shouldn't really "alert"
}
如果打算只支持整数,请使用parseInt(this.value, 10)
[注意基数参数]而不是+this.value
:
function add() {
var sum = 0;
$(".add").each(function() {
var str = this.value.trim(); // .trim() may need a shim
if (str) { // don't send blank values to `parseInt`
sum += parseInt(str, 10);
}
});
return sum;
}
答案 1 :(得分:4)
function add(){
var sum = 0;
$(".add").each(function() {
var val = parseInt($(this).val(), 10)
sum += (!isNaN(val) ? val : 0);
});
alert(sum);
}
编辑:锐利的眼睛,括号...... =)和空间。
答案 2 :(得分:0)
如果您不需要支持IE8,那么您可以使用本机Javascript Array.prototype.reduce()
方法。您需要首先将JQuery对象转换为数组:
function add() {
return $('.add').toArray().reduce(function(sum,element) {
return sum + Number(element.value);
}, 0);
}
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce