Javascript 使用每个()求和值
我试图返回值的总和每次更改一个选择时。但总数总是错的:Javascript 使用每个()求和值,javascript,jquery,each,Javascript,Jquery,Each,我试图返回值的总和每次更改一个选择时。但总数总是错的: $('select').change(function () { a = 0; $('select').each(function () { a += parseInt($('option:selected').val(), 10); }); $('h1 span').html(a); }); 使用this.value(比您已经拥有jQuery对象时重新获取它要快)并声明a,这样它就不是全局的(我还立即调用了处理程序,
$('select').change(function () {
a = 0;
$('select').each(function () {
a += parseInt($('option:selected').val(), 10);
});
$('h1 span').html(a);
});
使用
this.value
(比您已经拥有jQuery对象时重新获取它要快)并声明a
,这样它就不是全局的(我还立即调用了处理程序,这样您的结果就会立即显示):
有关IE版本中的this.value
的潜在问题,请参阅注释
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += parseInt(this[this.selectedIndex].value, 10);
});
$('h1 span').html(a);
});
使用sum插件,您将拥有:
$('select').change(function () {
$('h1 span').html($('option:selected').sum());
});
小提琴:
注
您使用val
方法,因为您的元素是option
tag。但是,例如,如果它是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);
});
显然,结果是正确的,因为您必须用以下内容替换“选项:已选择”:
a += parseInt($(this).val(), 10);
如果您将“option:selected”放在第一个选择器上,则使用$(这)可以获得每个选择的值
希望这个评论能帮助你。。。
再见除了parseInt,还有另一种选择;在
+
前面加上前缀将“数值”字符串转换为数字:
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += +this.value;
});
$('h1 span').html(a);
});
为什么
这个.value
更好?它在大多数IE浏览器中都会失败。@CookieMonester——当您已经在集合上迭代时,初始化另一个jQuery对象没有意义——它以当前元素为目标——不是通用的选项:选中的不调用选择框中的.value,或者使用$(this).val()
或使用其选项读取值:this.options[this.selectedIndex].value
-selectbox.value在某些浏览器上未定义。@scragar--什么浏览器?IE(我想可能甚至是版本11)没有为select
元素提供.value
属性。当然可以填充。var sum=$(“选择选项:selected”).toArray().reduce(函数(sum,val){return sum+val;},0)代码>
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += +this.value;
});
$('h1 span').html(a);
});