2013-10-25 4 views
0

나는 이것을 디버깅하려고 시도했지만, 왜 하나씩 증가시킬 때마다 변수 disp가 NaN으로 리턴하는지 이해할 수 없다. 왜 누군가가 이런 일이 일어나고 있는지에 관해 밝혀 낼 수 있다면 나는 그것을 열 배나 감사 할 것입니다.자바 스크립트에서 정수를 증가 시키면 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)가 있습니다.

+0

var disp = disp ++; 다른 변수 이름을 사용하십시오. – Akshay

답변

4

재 선언은 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'입니다. – bfavaretto

+0

disp = disp ++ does not는 disp ++ 일 필요가 있지만, + 1'd 감사합니다. – George

+0

@George : 좋은 지적! 업데이트 된 답변. 'disp = disp ++'는 포스트 증가분이므로'disp'에 적용된 값은'disp'의 증가되지 않은 값입니다. (추신 : 만족 스럽다면이 답을'Answer'로 표시하십시오.) –

0

배열에서 맨 위에 배치 한 후에도 새 disp 변수를 선언하는 것처럼 보입니다. var disp를 제거하고 그냥 증가 시키거나 감소시킵니다.

0

var disp = disp++ 시도해보십시오 (var없이) 대신 입니다. 그리고 감소에 대해서도 마찬가지입니다. 나는 이것이 이것을 고쳐야한다고 생각한다!

관련 문제