2015-08-27 3 views
0

Моя проблема в том, что чем больше я «нажимаю» кнопку «Время запуска», тем быстрее она рассчитывается. Как я могу сменить его на нормальный 2 минуты таймера обратного отсчета? Как это: http://www.donothingfor2minutes.com/Javascript с таймером обратного отсчета

Мой код:

var minute = 1; 
var second = 59; 
function time(){ 
    setInterval(starttime, 1000); 
} 
function starttime(){ 
    document.getElementById("timer").innerHTML = minute +" : " + second ; 
    second--; 

    if(second == 00) { 
     minute--; 
     second = 59; 

     if (minute == 0) { 
      minute = 2; 
     } 
    } 
} 
+0

пытаются изменить '1000' – kulotskie

+0

, когда вы начинаете снова, что предположим, произойдет –

ответ

4

Если вы хотите, таймер сбрасывается каждый раз при нажатии кнопка, попробуйте сбросить интервал на клик:

var minute, second, timer; 

function time() { 
    clearInterval(timer); 
    minute = 1; 
    second = 59; 
    timer = setInterval(updateTime, 1000); 
} 
function updateTime() { 
    document.getElementById("timer").innerHTML = minute + " : " + second; 
    second--; 
    if (second == 00) { 
     minute--; 
     second = 59; 
     if (minute == 0) { 
      minute = 2; 
     } 
    } 
} 
1

То, что происходит в том, что вы, вероятно, вызывая time() несколько раз, и тем самым инициировать несколько setInterval вызовов.
Один из способов избежать этого, можно было бы добавить флаг timeStarted, который запускает таймер только тогда, когда оно снято с охраны:

var minute = 1; 
 
var second = 59; 
 
var timeStarted = false; 
 

 
function time() { 
 
    if(!timeStarted) { 
 
     timeStarted = true; 
 
     setInterval(starttime, 1000); 
 
    } 
 
} 
 

 
function starttime() { 
 
    document.getElementById("timer").innerHTML = minute + " : " + second; 
 
    second--; 
 
    if (second == 00) { 
 
    minute--; 
 
    second = 59; 
 
    if (minute == 0) { 
 
     minute = 2; 
 
    } 
 
    } 
 
}

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