2017-09-27 49 views
1

好的我正在试图包装一个项目,唯一让我失望的是他们要求计时器开始点击比赛游戏。计时器在加载HTML文件时启动,这不是项目想要的,我尝试了一些方法,但最终冻结了游戏。我希望计时器能够在点击卡片时启动。点击记忆游戏的第一张牌时启动计时器

var open = []; 
var matched = 0; 
var moveCounter = 0; 
var numStars = 3; 
var timer = { 
    seconds: 0, 
    minutes: 0, 
    clearTime: -1 
}; 

//Start timer 
    var startTimer = function() { 
     if (timer.seconds === 59) { 
      timer.minutes++; 
      timer.seconds = 0; 
     } else { 
      timer.seconds++; 
    }; 


    // Ensure that single digit seconds are preceded with a 0 
    var formattedSec = "0"; 
     if (timer.seconds < 10) { 
      formattedSec += timer.seconds 
     } else { 
      formattedSec = String(timer.seconds); 
     } 

     var time = String(timer.minutes) + ":" + formattedSec; 
     $(".timer").text(time); 
    }; 

这是点击卡的代码。我试图将startTimer代码包含进去,但不起作用。

var onClick = function() { 
    if (isValid($(this))) { 

     if (open.length === 0) { 
      openCard($(this)); 

     } else if (open.length === 1) { 
      openCard($(this)); 
      moveCounter++; 
      updateMoveCounter(); 

      if (checkMatch()) { 
       setTimeout(setMatch, 300); 

      } else { 
       setTimeout(resetOpen, 700); 

      } 
     } 
    } 
}; 

而且我用我的HTML文件,这个类代码

<span class="timer">0:00</span> 
+0

把你的代码放到一个笨重的codepen或类似的,你可能会得到更多的利润丰厚的回应。这里缺少背景,这使得很难说出发生了什么。 – rjustin

+0

在这里完整的代码在行动https://codepen.io/cmandersen/pen/aLWZMb一切正常,除了计时器。计时器预计在单击卡片时启动,而不是在加载页面时启动。 –

回答

0

试试这个:https://codepen.io/anon/pen/boWQbe

你需要做的一切都是从页面加载发生在函数删除resetTimer()调用和那么只需在卡片的onClick中检查以确定计时器是否已经启动。 timer.seconds == 0 && timer.minutes == 0

+0

工作。谢谢您的帮助。节省了很多时间,我可以专注于下一个项目。 –

+0

@ChadAndersen如果你满足于这个答案,请接受它来帮助其他人在未来出现类似的问题。 – rjustin