我试图使用jQuery执行简单的计算,但我得到了NaN作为结果。
这是我的javascript:
$(document).on('click','.button-group button:not(.done)', function(e){
e.preventDefault();
$(this).addClass('active');
var votevalue = $(this).data('votevalue');
var image_id = $('.mainimage').data('image_id');
var votes = $('.mainimage').data('numvotes');
var totalscore = $('.mainimage').data('totalscore');
$.ajax({
type: 'POST',
url: '?a=vote',
data: {
"votevalue" : votevalue,
"image_id" : image_id
},
success: function(){
var votes = parseInt(votes);
votes++;
var average = ((parseInt(totalscore) + parseInt(votevalue)) / votes);
$('#vote-incremenet').html(votes);
$('#display-average').html(average);
$('#display-average').show();
$('.button-group button').addClass('done');
}
}); // end ajax
}); // end click
我做错了什么?
答案 0 :(得分:3)
使用parseInt时,请务必通过(parseInt(str), radix)
以防止自动转换为其他基础。
如果输入字符串以“0x”或“0X”开头,则radix为16 (十六进制)。
如果输入字符串以“0”开头,则基数为8 (八进制)。此功能是非标准的,有些实现 故意不支持它(而是使用基数10)。
为此 当使用parseInt时,reason总是指定一个基数。
(的 MDN 强>)
在您的情况下,parseInt(varname, 10);
如果问题仍然存在,则可能是您将错误的值传递给您用于计算的其中一个变量。
修改强>
回调中的 var votes = parseInt(votes);
使其成为局部变量。因此,它失去了外面的价值。不要在回调中重新声明它。