使用each()对值求和

Sum values using each()

本文关键字:求和 each 使用      更新时间:2023-09-26

我试图返回值的总和每次选择之一被改变。但总和总是错的:

$('select').change(function () {
 a = 0;
 $('select').each(function () {
    a += parseInt($('option:selected').val(), 10);
 });
 $('h1 span').html(a);
});
http://jsfiddle.net/vAu3E/

$('select').change(function () {
    var a = 0;
    $('select').each(function () {
        a += parseInt(this[this.selectedIndex].value, 10);
    });
    $('h1 span').html(a);
});

JSFiddle

使用this.value(比重新获得一个jQuery对象更快,当你已经有它),并声明a,所以它不是全局的(我也调用处理程序,所以你的结果立即显示):

$('select').change(function () {
    var a = 0;
    $('select').each(function () {
         a += parseInt(this[this.selectedIndex].value, 10); //originally this.value
    });
    $('h1 span').html(a);
}).change();
http://jsfiddle.net/vAu3E/10/

查看IE版本中this.value的潜在问题

使用sum插件,您将有:

$('select').change(function () {
    $('h1 span').html($('option:selected').sum());
});

FIDDLE: http://jsfiddle.net/abdennour/vAu3E/18/

<标题>注意

您使用val方法,因为您的元素是option标记。但是,如果它是DIV内容元素的总和,例如,您必须使用html方法而不是val:

所以,sum插件仍然有用:

   $('div.operators').sum('html');

我建议:

$("select").on("change", function(){
    var a = 0;
    $("select").each(function(){
        a += parseInt($(this).val());
    });
    $('h1 span').html(a);
});

小提琴

显然结果是正确的,因为您必须将"option:selected"替换为:

a += parseInt($(this).val(), 10);

如果你输入"option:selected"选择器是第一个选择器,而不是$(this)你得到每个选择的值…

希望这个评论对你有所帮助…再见

有一个替代parseInt;加上+将把'numeric '字符串转换为数字:

$('select').change(function () {
    var a = 0;
    $('select').each(function () {
        a += +this.value;
    });
    $('h1 span').html(a);
});

WORKING JSFIDDLE DEMO