2016-11-24 5 views
-3

Я попытался сделать обычный таймер в Javascript и начал кодировать что-то с помощью некоторых уроков.Таймер не запускается

Я сделал это так же, как в учебнике, но мой таймер фактически не запускается, и я не знаю почему.

Вот мой код:

var time = 0; 
     var running = 0; 

     function startPause() { 
      if(running == 0){ 
       running = 1; 
       increment(); 
      } 
      else{ 
       running = 0; 
      } 
     } 

     function reset(){ 
      running = 0; 
      time = 0; 
      document.getElementById("startPause").innerHTML = "Start"; 

     } 
     function increment() { 
       if(running == 1){ 
       setTimeout(function(){ 
        time++; 
        var mins = Math.floor(time/10/60); 
        var secs = Math.floor(time/10); 
        var tenths = time % 10; 
        document.getElementById("output").innerHTML = mins + ":" + secs + ":" + tenths; 

          }, 100); 
       } 
     } 
</script> 

я также сделал скрипку вы можете проверить здесь: https://jsfiddle.net/adamswebspace/5p1qgsz9/

, что случилось с моим кодом?

+0

у вас есть 3 функции, но нигде в вашей выборке не вы на самом деле назвать какой-либо из них. Вы не включили в свой образец здесь весь код, который находится в скрипке, что вводит в заблуждение читателя. В вашей скрипке есть ошибка JS «startPause не является функцией», а это просто потому, что вам нужно включить функцию перед кодом, который ее вызывает. В терминах JSFiddle просто измените параметры Javascript, чтобы loadType был «nowrap - in head». https://jsfiddle.net/5p1qgsz9/1/ Другая проблема заключается в том, что таймер работает только один раз - я думаю, вам нужно setInterval вместо setTimeout. – ADyson

+1

Я думаю, что вам нужно setInterval, а не setTimeout. setTimeout выполнит его только один раз. – user2427829

+0

Хорошо, я попробую это в своей скрипке и попробую setTimeout для моего таймера. спасибо – adamswebspace

ответ

0

Я очистил немного кода, и использовать setInterval вместо SetTimeout; обратите внимание, что вы должны использовать clearInterval для того, чтобы остановить таймер

var time = 0; 
var running = 0; 
var timer = null; 
function increment() { 
    time++; 
    var mins = Math.floor(time/10/60); 
    var secs = Math.floor(time/10); 
    var tenths = time % 10; 
    document.getElementById("output").innerHTML = mins + ":" + secs + ":" + tenths; 
} 
function startPause() { 
    if (running === 0) { 
     running = 1; 
     timer = setInterval(increment, 1000); 
    } else { 
     running = 0; 
     clearInterval(timer); 
    } 
} 

function reset() { 
    running = 0; 
    time = 0; 
    document.getElementById("startPause").innerHTML = "Start"; 

} 
+0

Спасибо, что помогло мне понять мою проблему! :) – adamswebspace

+0

Добро пожаловать –

0

вы должны связать функцию как следующий

var vm = this; 

vm.startPause = function startPause() { 
    if (running == 0) { 
    running = 1; 
    vm.increment(); 
    } else { 
    running = 0; 
    } 
} 

https://jsfiddle.net/f7hmbox7/

0

Для того, чтобы onclick найти функцию в вашем коде. Он должен быть указан в теге <script> для JSFiddle.

Вы можете просто добавить

<script> 

/** JS Here */ 

</script> 

и он будет работать.

Имейте в виду, что все ошибки, возникающие из JS, отображаются в консоли вашего инспектора браузера.

https://jsfiddle.net/dzskncpw/

+0

Это сработало и благодаря. – adamswebspace

Смежные вопросы