2017-02-22 7 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 )$( "#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); 
} 
関連する問題