2015-10-30 2 views
5

У меня есть кнопка запуска для моего обратного отсчета, но я хочу, чтобы она остановилась, когда я нажимаю кнопку остановки.Как остановить обратный отсчет javascript, нажав кнопку?

мой HTML код:

<div> 
    <span id="timer">25:00</span> 
</div> 

Start Stop

мой JS код:

$('#startTimerButton').click(function starter() { 

      function startTimer(duration, display) { 
       var timer = duration, minutes, seconds; 
       setInterval(function() { 
        minutes = parseInt(timer/60, 10); 
        seconds = parseInt(timer % 60, 10); 

        minutes = minutes < 10 ? "0" + minutes : minutes; 
        seconds = seconds < 10 ? "0" + seconds : seconds; 

        display.text(minutes + ":" + seconds); 

        if (--timer < 0) { 
         timer = duration; 
        } 

       }, 1000); 
      } 

      jQuery(function ($) { 
       var fiveMinutes = 60 * 25, 
        display = $('#timer'); 
       startTimer(fiveMinutes, display); 
      }); 


    }); 
+0

HTTP : //www.w3schools.com/js/js_timing.asp прокрутите вниз до "Как остановить выполнение?" –

+0

Я хочу остановить его во время его запуска –

ответ

0

подключить функцию с переменной, как это: (Попробуйте без 'вар')

var my_timer = setInterval(function() { ... 

И остановить таймер с этой функцией:

$("#stop_btn").click(function(){ 
    clearInterval(my_timer); 
}); 
0

Вам нужно очистить интервал при нажатии кнопки. Предположим, что кнопка для остановки - #stopTimerButton. Затем измените свои js на:

$('#startTimerButton').click(function starter() { 

     function startTimer(duration, display) { 
      var timer = duration, minutes, seconds; 
      interval = setInterval(function() { 
       minutes = parseInt(timer/60, 10); 
       seconds = parseInt(timer % 60, 10); 

       minutes = minutes < 10 ? "0" + minutes : minutes; 
       seconds = seconds < 10 ? "0" + seconds : seconds; 

       display.text(minutes + ":" + seconds); 

       if (--timer < 0) { 
        timer = duration; 
       } 

      }, 1000); 
     } 

     jQuery(function ($) { 
      var fiveMinutes = 60 * 25, 
       display = $('#timer'); 
      startTimer(fiveMinutes, display); 
     }); 


}); 
$('#stopTimerButton').click(function() { 
    clearInterval(interval); 
}); 
+0

Я получаю эту ошибку: Непринятый ReferenceError: интервал не задан –

+0

, который должен исправить его – AMACB

0

Чтобы остановить таймер, вам необходимо использовать функцию clearInterval.

$(document).ready(function() { 
var handler; 

$('#stopTimerButton').click(function() { 
    if (handler) { 
     clearInterval(handler); 
    } 
}); 

$('#startTimerButton').click(function starter() { 

      function startTimer(duration, display) { 
       var timer = duration, minutes, seconds; 
       handler = setInterval(function() { 
        minutes = parseInt(timer/60, 10); 
        seconds = parseInt(timer % 60, 10); 

        minutes = minutes < 10 ? "0" + minutes : minutes; 
        seconds = seconds < 10 ? "0" + seconds : seconds; 

        display.text(minutes + ":" + seconds); 

        if (--timer < 0) { 
         timer = duration; 
        } 

       }, 1000); 
      } 

      jQuery(function ($) { 
       var fiveMinutes = 60 * 25, 
        display = $('#timer'); 
       startTimer(fiveMinutes, display); 
      }); 
    }); 
}); 
1

Во-первых, попытаться вернуть интервал в функции:

function startTimer(duration, display) { 
    var timer = duration, minutes, seconds; 
    timeInterval = setInterval(function() { 
     minutes = parseInt(timer/60, 10); 
     seconds = parseInt(timer % 60, 10); 

     minutes = minutes < 10 ? "0" + minutes : minutes; 
     seconds = seconds < 10 ? "0" + seconds : seconds; 

     display.text(minutes + ":" + seconds); 

     if (--timer < 0) { 
      timer = duration; 
     } 

    }, 1000); 
    return timeInterval; 
} 

Затем, вызов этой функции присвоить его переменной, так что вы можете очистить его позже:

var countTimeInterval = startTimer(); 
clearInterval(countTimeInterval);