变量递增两次而不是一次

时间:2012-08-02 19:42:09

标签: javascript

在我的程序结束时,我在evalSeqResults()中增加'level'然后显示结果(虽然我稍后会在此方法中添加不同的要求)

当resultStr出现在屏幕上时,它具有正确的级别,但是几秒后,“级别”再次增加,依赖它的其他2个变量也是如此

有谁知道这是为什么?

以下是一些代码:http://pastebin.com/RuKLadmK

function endSequence() {     
    evalSeqResults(); 
    displaySeqResults();
 }

function evalSeqResults() {
    level++;
}

function displaySeqResults() {
    var resultStr = "You scored " + correctCount + " out of " + (NUM_OF_STACKS + 20) +
    "<br/>";
    resultStr += "Your next level is: " + level + "<br/>";
    resultStr += "There will be " + LEVELS[level].numDecks + " decks and you are looking for " + LEVELS[level].nBack + " back. <br/>";
    resultStr += "Press START to continue";
    $('#resultspara').html(resultStr);
    $('#resultspara').show(0);
 }

1 个答案:

答案 0 :(得分:1)

您的level变量无处定义。但是,我在您的代码中发现了一个小问题:endSequence被调用:

function doNext() {
     if (cardNum < maxCard) {
          cardNum++;
          fixate();
     }
     if (cardNum == maxCard) {
          endSequence();
     }
}

假设cardNum4maxCard5。第一次调用doNext时,第一个条件为真。 cardNum增加到5并调用fixate。之后,第二个条件也为真(5==5) - endSequence被调用。第二次调用doNext时,只有第二个条件匹配并再次执行endSequence

我想你想要:

function doNext() {
     if (cardNum < maxCard) {
          cardNum++;
          fixate();
     } else if (cardNum == maxCard) {
//     ^^^^
          endSequence();
     }
}