【问题标题】:Incrementing an integer in javascript results in NaN在 javascript 中增加整数会导致 NaN
【发布时间】:2023-03-03 04:41:01
【问题描述】:

我试图调试它,但我只是不明白为什么每当我将变量 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');
    }
});

你会看到我有 alert(disp) 在那里,它用于调试目的。

【问题讨论】:

  • var disp = disp++;使用不同的变量名。

标签: javascript jquery auto-increment


【解决方案1】:

重新声明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++

【讨论】:

  • 是的,undefined++ 是 NaN。
  • disp = disp++ 不起作用或者它只需要是 disp++ 但谢谢,+1'd
  • @George:好点子!更新了答案。 disp = disp++ 是一个后增量,因此应用于disp 的值是disp 的未增量值。 (PS:如果您满意,请将此帖子标记为Answer)
  • 你不需要disp=,disp++已经意味着disp = disp + 1。
  • @bfavaretto:同意。这样生活会更轻松。更新了答案。
【解决方案2】:

看起来您在函数中声明了一个新的 disp 变量,即使您已经在顶部的数组之后这样做了。摆脱 var disp 并增加或减少它。

【讨论】:

    【解决方案3】:

    看起来可能是由于 var disp = disp++ 请尝试 disp=disp+1 (不带 var)。减量也是如此。我认为它应该解决这个问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2015-11-20
      • 1970-01-01
      相关资源
      最近更新 更多