2012-08-02 93 views
0

在我的節目的最後,我遞增evalSeqResults「等級」(),然後顯示結果(雖然我在這個方法後來添加不同的要求)變量遞增,而不是一次

當兩次resultStr出現在屏幕上,它具有正確的級別,但幾秒鐘後,'級別'增加一次,其他兩個變量也依賴於它

有沒有人知道這是爲什麼?

這裏的一些代碼: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); 
} 
+3

你叫'endSequence'兩次?我們可以在這裏說的不多。請創建一個http://jsfiddle.net/演示,其中顯示您正在描述的行爲。 – 2012-08-02 19:44:06

+3

顯然有一些代碼我們在這裏沒有看到導致問題 – Zaq 2012-08-02 19:46:12

+1

A [jsFiddle](http://www.jsfiddle.net)可以幫助我們更快地解決此問題。 – axcdnt 2012-08-02 19:48:01

回答

1

level變量定義無門。然而,我發現代碼中的毛刺,點在哪裏endSequence被稱爲:

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

比方說,cardNum4maxCard5。第一次調用doNext時,第一個條件是成立的。 cardNum增加到5fixate被調用。之後,第二個條件也成立(5==5) - 調用endSequence。第二次調用doNext,只有第二個條件匹配,並且再次執行endSequence

我想你想:

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

啊謝謝。那如果是的話。 (我確實在我的代碼中定義了更高的級別。) – 2012-08-02 20:18:11

+0

你只是在訓練我的bug搜尋技巧:-) – Bergi 2012-08-02 20:20:28