使用jQuery求和每个没有全局变量的函数

时间:2010-12-07 14:02:22

标签: jquery each

我想添加一些具有相同类名的HTML元素。

因此,代码将与jQuery一样。

$(".force").each(function (){
    a += parseInt( $(this).html());
});
$("#total_forces").html(a);

在此代码中,变量必须是全局变量。

是否还有其他优雅的方法可以对每个.force值求和并从each函数中求出没有全局变量的总和?

5 个答案:

答案 0 :(得分:12)

如果您不想引入全局变量,可以使用以下内容:

$("#total_forces").html(function() {
    var a = 0;
    $(".force").each(function() {
        a += parseInt($(this).html());
    });
    return a;
});

答案 1 :(得分:4)

为方便起见,如果您经常需要同样的功能,我可能只是制作一个插件。

示例: https://jsfiddle.net/tzw4mkL2/

(function( $ ) {
    $.fn.sumHTML = function() {
       var sum = 0;
        this.each(function() {
           var num = parseInt( $(this).html(), 10 );
           sum += (num || 0);
        });
       return sum; 
    };
})( jQuery );

......会像这样使用:

$('#total_forces').html( $('.force').sumHTML() );

编辑:@Šime Vidas所述,更改为警惕NaN。同时确保parseInt()中的base-10并修复了丢失的结束}

答案 2 :(得分:2)

简而言之,没有。

为什么a必须是全球性的? 不是全球性的。

function aFunc() {
    var a = 0;

    $(".force").each(function (){
        a += parseInt( $(this).html());
    });

    return a;
}

$("#total_forces").html(aFunc());

其中,可以简化为:

$("#total_forces").html(function() {
    var a = 0;

    $(".force").each(function (){
        a += parseInt( $(this).html());
    });

    return a;
});

此处aaFunc的本地,并且只是数百万不属于全球范围的示例之一。

答案 3 :(得分:1)

不想要全球化吗?

(function() {
    var a = 0;
    $('.force').each(function (){
        a += parseInt($(this).text());
    });
    $('#total_forces').text(a);
})();

答案 4 :(得分:0)

你可以使用$(“。force”)。length,它返回jQuery对象中元素的数量。

jQuery API