显示为NaN的整数

时间:2012-11-30 16:45:12

标签: jquery

我将首先发布我的javascript。

    $(document).on('click','.remove-single-inbox-message', function(e){
    e.preventDefault();
    var messageid = $(this).data('messageid');
    var messages = $("#number-messages").html();
    var messages = parseInt(messages, 10);
    messages--;
    $.ajax({
        type: 'POST',
        url: '?a=profile_message_delete',
        data: {
            "messageid" : messageid
        },
        success: function(){
            $('.table-row'+messageid).hide();
            if(messages == 0){
                $("#insert-message-indicator").html("");
            } else {
                $("#insert-message-indicator").html("<strong><small>"+messages+"</small></strong>&nbsp;<i class='icon-envelope icon-white' rel='tooltip' title='New messages available'></i>");
        }
        }
    });
});

第一次递减工作正常,显示新数字,但后面的数字显示NaN。我做错了什么?

1 个答案:

答案 0 :(得分:8)

可能性1:

您在发布时混合了ID,"#number-messages"应为"#insert-message-indicator"

替换

var messages = $("#number-messages").html();

var messages = $("#number-messages").text();

您添加的"<strong><small>"会使html不可解析为整数。

可能性2:

执行$("#insert-message-indicator").html("<...时,您正在删除标识为#number-messages的元素,因此$("#number-messages").html()在第二次迭代时不会返回任何内容。

警告:

var messages = $("#number-messages").html();
var messages = parseInt(messages, 10);

相同
var messages = $("#number-messages").html();
messages = parseInt(messages, 10);

你可能应该有像

这样的东西
var messages_text = $("#number-messages").html();
var messages = parseInt(messages_text, 10);

因为您当前的代码令人困惑。