每次更改其中一个选项时,我都会尝试返回值的总和。但总和总是错误的:
$('select').change(function () {
a = 0;
$('select').each(function () {
a += parseInt($('option:selected').val(), 10);
});
$('h1 span').html(a);
});
答案 0 :(得分:9)
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += parseInt(this[this.selectedIndex].value, 10);
});
$('h1 span').html(a);
});
答案 1 :(得分:4)
使用this.value
(比你已经拥有它时重新获得jQuery对象更快)并声明a
所以它不是全局的(我也立即调用了处理程序,所以你的结果立即显示):< / p>
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += parseInt(this[this.selectedIndex].value, 10); //originally this.value
});
$('h1 span').html(a);
}).change();
在IE版本中查看this.value
潜在问题的评论
答案 2 :(得分:2)
使用和插件,您将拥有:
$('select').change(function () {
$('h1 span').html($('option:selected').sum());
});
您使用val
方法,因为您的元素是option
标记。但是,如果它是DIV内容元素的总和,您必须使用html
方法而不是val
:
所以,sum插件仍然有用:
$('div.operators').sum('html');
答案 3 :(得分:1)
我建议:
$("select").on("change", function(){
var a = 0;
$("select").each(function(){
a += parseInt($(this).val());
});
$('h1 span').html(a);
});
答案 4 :(得分:1)
显然结果是正确的,因为你必须替换&#34;选项:selected&#34;有了这个:
a += parseInt($(this).val(), 10);
如果你选择&#34;选项:select&#34;选择器是第一个选择器,而不是$(this)你得到每个选择的值......
希望这条评论可以帮助你...... 再见
答案 5 :(得分:1)
有parseInt
的替代品;预先加+
会将'numeric`字符串转换为数字:
$('select').change(function () {
var a = 0;
$('select').each(function () {
a += +this.value;
});
$('h1 span').html(a);
});