2017-02-22 46 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有幫助,它描述了一個帶有delta時序的可定時計時器,以實現準確性。

-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); 
}