简单的jquery总和

时间:2012-05-12 12:02:44

标签: jquery math sum

我有未知数量的输入字段,有类“添加”我只是想用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)
    }

`

3 个答案:

答案 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;
}

请参阅http://jsfiddle.net/alnitak/eHsJP/

答案 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