重置计时器?

时间:2015-02-10 04:46:58

标签: javascript html css

我在重置倒数计时器方面遇到了一些麻烦。这是JSFiddle。它基本上是一个简单的游戏,你有5秒的时间来选择一个给定单词的字谜这个词。

我基本上试图创建一个resetTimer()函数(第166行),如果您选择了正确答案,它将把计时器恢复到5:00。

这是我想在代码中调用resetTimer()函数的地方。

  view.updateData = function() {
    view.assignWords();
    view.displayTimer();

    for(var i = 0; i < this.buttons.length; i++) {
      this.buttons[i].addEventListener('click', function(event) {
        if(event.target === dictionary.correctButton) {
          dictionary.words.pop(this.currWord);
          dictionary.updateWordCount();
          view.assignWords();
          view.updateScore();
          view.resetTimer();
        } else {
          view.displayLossScreen();
        }
      });
    }
  };

这是我的计时器的代码,它从5:00开始并下降到零。

  view.displayTimer = function() {
    var count = 500;
    var timer = setInterval(countdown, 10);

    function countdown() {
      if(count === 0) {
        clearInterval(timer);
        view.displayLossScreen();
      } else {
        count--;
      }
      document.getElementById("timer").innerHTML = (count / 100).toFixed(2);
    }
  };

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

请考虑以下更改:

首先将计数设置为全局变量:

var count = 500;//global variable

view.resetTimer = function() {
    count=500;
  };

UPDATED DEMO

更新

由于行:

,计时器变得越来越快
var timer = setInterval(countdown, 10);//setting new variable with interval every time

我已将timer设置为全局变量,并在每次开始之前清除它:

var timer;//setting global variable
clearInterval(timer);//clearing timer
timer = setInterval(countdown, 10); 

Fixed DEMO