2017-02-22 21 views
-1

Мне нужно добавить функцию паузы в таймер.Невозможно приостановить таймер setInterval()

https://codepen.io/ccw13/pen/WpevOe?editors=0010

$(document).ready(function() { 
    var buzzer = $("#buzzer")[0] 
    var num = parseInt($("#timerNum").html()); 

    $("#start").click(function() { 
    var counter = setInterval(timer, 1000); 

    function timer() { 
     $("#start").hide(); 
     num -= 1; 
     if (num === 0) { 
     //buzzer.(play); 
     $("#start").show(); 
     clearInterval(counter); 
     } 
     $("#timerNum").html(num); 
    } 
    }); 

    $("#reset").click(function() { 
    num = 24; 
    $("#timerNum").html(num); 

    }); 

}); 
+1

Что ваша проблема? Просто попробуйте что-нибудь – empiric

+2

Я даю вам подсказку: объявляйте 'counter' глобально и делайте' clearInterval (counter); 'внутри обработчика клика паузы – empiric

+0

Другая опция:' var paused = false; '...' if (paused) return; '...' $ ("# pause"). click (.. paused =! paused ... ' –

ответ

1
var counter; 
counter = setInterval(timer, 1000) 

clearInterval(counter); // releases interval 

Вот fiddle, чтобы продемонстрировать общую идею.

Вы также можете найти this answer, в котором описывается пауза таймера с дельта-синхронизацией для точности.

-2

я попробовать что-то,

var num; 
    var interval; 

    $(document).ready(function(){ 

    var buzzer = $("#buzzer")[0] 
    num = parseInt($("#timerNum").html()); 

    $("#start, #reset, #pause").click(function(e){ 
     getAction(e); 
    }); 
    }); 

function getAction (target){ 
    action = target.currentTarget.id; 
    switch (action) { 
    case "start": 
     $("#start").hide(); 
     timer(action, num); 
    break; 
    case "reset": 
     num=24; 
     $("#timerNum").html(num); 
     $("#start").show(); 
     clearInterval(interval); 
    break; 
    case "pause": 
     num = parseInt($("#timerNum").html()); 
     clearInterval(interval); 
     $("#start").show(); 
    break; 
    } 

} 

function timer(action, num){ 
    interval = setInterval(function(){ 
     num-=1; 
     $("#timerNum").html(num); 
    }, 1000); 
} 

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

  • Нет связанных вопросов^_^