我想提醒计算的总金额,但我不知道为什么而不是计算它只是附加值。
代码:
$('#main button').click(function(){
id = $(this).attr('id');
parts = id.split('_');
item_id = parts[0];
pairs = $('#'+item_id+'_pairs').val();
females = $('#'+item_id + '_females').val();
males = $('#'+item_id + '_males').val();
if(pairs >0){
counted_pairs = pairs*2;
}else{
counted_pairs = 0;
}
total_fishes = (males + females + counted_pairs);
alert(total_fishes);
});
如果我添加1对1男性和1女性形式,它应该显示4总,但它显示111似乎附加不计算?
答案 0 :(得分:5)
你需要做一个数字加法。你所拥有的是字符串连接。
尝试使用parseInt
将其转换为数字。
total_fishes = (parseInt(males, 10) + parseInt(females, 10) + counted_pairs);
注意:我没有申请count_pairs,因为它是一个数字,因为counted_pairs = pairs*2;
答案 1 :(得分:2)
获取数字时将值解析为数字:
pairs = parseInt($('#'+item_id+'_pairs').val(), 10);
females = parseInt($('#'+item_id + '_females').val(), 10);
males = parseInt($('#'+item_id + '_males').val(), 10);
现在,当pairs
是一个数字时,您不必专门检查零,因为0 * 2
计算得很好:
counted_pairs = pairs * 2;
答案 2 :(得分:2)
如果您要添加的其中一个变量包含字符串值,则JavaScript会将这些值相互追加,就像所有字符串一样。确保所有变量都包含整数值;否则通过解析建议的其他答案将它们转换为整数。
答案 3 :(得分:2)
在if语句之前将值转换为整数...
pairs = parseInt($('#'+item_id+'_pairs').val(), 10);
females = parseInt($('#'+item_id + '_females').val(), 10);
males = parseInt($('#'+item_id + '_males').val(), 10);
答案 4 :(得分:1)
您正在连接字符串,而不是添加值。使用parseFloat
或parseInt
添加数字。
total_fishes = (parseFloat(males) + parseFloat(females) + parseFloat(counted_pairs));
答案 5 :(得分:0)
更改total_fishes =(男性+女性+ counts_pairs);对此:
total_fishes = ((males * 1 + females * 1) * 1 + counted_pairs * 1);
这个会工作,我知道这看起来很奇怪,但当你使用* 1 +值* 1时,Javascript会将变量转换为数字。我无法解释原因,但我看到了代码的安静几年前在cPanel x中,我经常使用它。
编辑:
当您使用用户输入时,实际上存在差异,您可以使用isNaN检查值是否错误,当您使用parseInt时这将无效,因为它会抑制错误并尝试创建整数。
TestCode:
var males = "2,4";
var females = "3";
var counted_pairs = "33";
var result = ((males * 1 + females * 1) * 1 + counted_pairs * 1);
var resultb = (parseInt(males) + parseInt(females * 1) + parseInt(counted_pairs));
if (isNaN(result)) {
alert("Input is wrong my method");
}
if (isNaN(resultb)) {
alert("Input is wrong using parseint");
}
结果:仅显示第一个警报屏幕。