parseInt html字符串值

时间:2012-11-10 23:01:19

标签: javascript jquery

我试图使用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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

使用parseInt时,请务必通过(parseInt(str), radix)以防止自动转换为其他基础。

  

如果输入字符串以“0x”或“0X”开头,则radix为16   (十六进制)。

     

如果输入字符串以“0”开头,则基数为8   (八进制)。此功能是非标准的,有些实现   故意不支持它(而是使用基数10)。

     

为此   当使用parseInt时,reason总是指定一个基数。

(的 MDN

在您的情况下,parseInt(varname, 10);


如果问题仍然存在,则可能是您将错误的值传递给您用于计算的其中一个变量。


修改

回调中的

var votes = parseInt(votes);使其成为局部变量。因此,它失去了外面的价值。不要在回调中重新声明它。