0

在我的程序结束时,我在 evalSeqResults() 中增加“级别”,然后显示结果(尽管稍后我将在此方法中添加不同的要求)

当 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);
 }
4

1 回答 1

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();
     }
}
于 2012-08-02T20:14:08.777 回答