Увеличение целого числа в JavaScript приводит к NaN

0

Я попытался отладить это, но я просто не понимаю, почему переменная disp возвращается как NaN, когда я увеличиваю ее на единицу. Если бы кто-нибудь мог пролить свет на то, почему это происходит, я бы оценил это в десять раз.

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');
    }
});

Вы увидите, что у меня есть предупреждение (disp) там, для его отладки.

  • 0
    var disp = disp ++; Используйте другое имя переменной.
Теги:
auto-increment

3 ответа

4
Лучший ответ

Re-декларации disp. Вы объявляете это дважды:

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');
    }
});

Решение. Чтобы использовать глобальный disp, не объявляйте его снова. Просто используйте disp++

  • 0
    Да, undefined++ - это NaN .
  • 0
    disp = disp ++ не работает, либо просто должен быть disp ++, но спасибо, да, +1
Показать ещё 3 комментария
0

похоже, что, вероятно, из-за var disp = disp++ попробуйте disp=disp+1 (без var). И аналогично для декрементов. Я думаю, это должно исправить это!

0

Похоже, вы объявляете новую функцию disp в своих функциях, даже если вы уже сделали это после своего массива вверху. Избавьтесь от var disp и просто увеличивайте или уменьшайте его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню