使用 jQuery 求和每个函数而不使用全局变量

发布于 2024-10-07 02:12:46 字数 279 浏览 4 评论 0原文

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

所以,使用 jQuery 的代码将是这样的。

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

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

是否有其他优雅的方法来对每个 .force 值求和,并从没有全局变量的 each 函数中获取总和?

I want to add some HTML elements that have the same class name.

So, the code will be like this with jQuery.

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

In this code, the variable has to be global.

Is there any other elegant way to sum every .force value and get the sum out of the each function without global variable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梦途 2024-10-14 02:12:51

不想要全局吗?

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

Don't want a global?

(function() {
    var a = 0;
    $('.force').each(function (){
        a += parseInt($(this).text());
    });
    $('#total_forces').text(a);
})();
无人接听 2024-10-14 02:12:51

您可以使用 $(".force").length,它返回 jQuery 对象中的元素数量。

jQuery API

You can use $(".force").length, it returns the number of elements in the jQuery object.

jQuery API

秋千易 2024-10-14 02:12:50

简而言之,不。

为什么 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 的本地变量,并且只是它不在全局范围内的数百万个示例之一。

In short, no.

Why does a have to be global? It doesn't have to be global.

function aFunc() {
    var a = 0;

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

    return a;
}

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

Which, can be simplified to:

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

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

    return a;
});

Here a is local to aFunc, and is just one of millions of examples of it not being in the global scope.

时光匆匆的小流年 2024-10-14 02:12:49

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

示例: 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() );

编辑:更改为防范NaN,如@Šime Vidas。还确保了 parseInt() 中的基数为 10,并修复了缺失的结束 }

For convenience, if you're going to be needing this same functionality frequently, I'd probably just make a plugin.

Example: 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 );

...which would be used like this:

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

EDIT: Changed to guard agains NaN as noted by @Šime Vidas. Also ensured base-10 in the parseInt() and fixed a closing } that was missing.

零時差 2024-10-14 02:12:48

如果你不想引入全局变量,你可以使用这样的东西:

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

If you don't want to introduce a global variable, you could use something like this:

$("#total_forces").html(function() {
    var a = 0;
    $(".force").each(function() {
        a += parseInt($(this).html());
    });
    return a;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文