Search code examples
javascriptjqueryauto-increment

Incrementing an integer in javascript results in NaN


I've tried to debug this but I just don't understand why the variable disp returns as NaN whenever I increment it by one. If anyone could shed some light on why this is happening I'd appreciate it tenfold.

var votePages = new Array();
votePages[0] = "http://minecraftservers.org/vote/100924";
votePages[1] = "http://www.planetminecraft.com/server/revolutionarycraft---ssdfactionsecosurvivalgrief/vote/";
votePages[2] = "http://minecraftservers.net/server/66267/vote/";
votePages[3] = "http://mineservers.com/server/11885/vote";
votePages[4] = "https://minestatus.net/92187-revolutionary-craft/vote";
var disp = 0;

$("#dispVotePage").attr("src", votePages[disp]);

$(document).on('click', '#next', function(){
    $("#dispVotePage").attr("src", '');
    var disp = disp++;
    alert(disp);
    $("#dispVotePage").attr("src", votePages[disp]);
    if (disp !== 0) {
        $("#previous").css('display', 'block');
    }
});

$(document).on('click', '#previous', function(){
    $("#dispVotePage").attr("src", '');
    var disp = disp--;
    $("#dispVotePage").attr("src", votePages[disp]);
    if (disp === 0) {
        $("#previous").css('display', 'none');
    }
});

You'll see that I have alert(disp) in there, its for debugging purposes.


Solution

  • Re-declaration of disp. You are declaring it twice:

    var disp = 0;                  //Initial Declaration (Global)
    
    ... <snip> ...
    
    $(document).on('click', '#next', function(){
        $("#dispVotePage").attr("src", '');
        var disp = disp++;         //Re-declaration. Declares `disp` as a new local variable.
        alert(disp);
        $("#dispVotePage").attr("src", votePages[disp]);
        if (disp !== 0) {
            $("#previous").css('display', 'block');
        }
    });
    

    Solution: To use the global disp, do not declare it again. Just use disp++