计时器由两个而不是一个计数

时间:2013-08-29 18:10:02

标签: javascript timer

我用html / css / javascript编写的这款扫雷游戏,一般运行得相当不错,我在其中放了一个计时器,计时器总能顺利运行。

然而,当我正在播放它时,它开始递增2(这意味着计时器以某种方式被触发两次而没有超时工作)。从来没有发生过,据我所知,我试过但不能让它再次发生,here is a link,以及相关的代码:

function timer() {
    if ( gameOn ) {
        timePast++;
        document.getElementById("timer").innerHTML = timePast;
        timeoutID = window.setTimeout(timer, 1000);
    } 
}

计时器在我的start()功能中设置:

timePast = 0;
    //start the timer if it was stopped
if ( !gameOn )
    timeoutID = window.setTimeout(timer, 1000);

以下是我的gameOn变量的所有实例(除了上面的两个和if语句之外):

    var gameOn = false; //(line 6) initialization
    gameOn = true; //(line 85) in start() - after the above code
    gameOn = false;//(line 154) in checkWin() function
    gameOn = false;//(line 239) in gameOver() function (triggers when game is lost)

这里是上述功能的部分(可能相关的部分):

function bombCheck(event) {
    var boxNum = parseInt(event.id);
    if ( bomb.indexOf(boxNum) >= 0 ) {
      gameOver();   }}

 gameOver(){gameOn = false;}

现在为checkWin:

    function checkWin() {
        if ( flippedCount === ( cellAmount - bombAmount ) ) { gameOn = false; }}

开始触发:

   <input type="button" class="MtopSmall" value="start!" name = "startButton" onclick = "start();" >
 start(){gameOn = true;}

我知道我应该将setTimeout更改为setInterval而我会(有一天),但我想了解这里有什么问题。

我对javascript有一个相当不错的理解,我完全难过,如果有人能告诉我为什么会发生这种情况和/或如何解决它,那将会很酷。

0 个答案:

没有答案