2017-01-27 6 views
1

Aはeggtimerを持っていますが、これは "stop"ボタンをクリックした後に停止できます。私が欲しいのは、このタイマーを確認ボックスで "キャンセル"をクリックした後、(停止した時点から)再び作動させることです。すべての訴訟?助けてくださってありがとうございます。clearInterval()の後にeggtimerを起動するには?

<!DOCTYPE html> 
<html> 
<body onload="timer();"> 
<button onclick="exit();">stop</button> 
    <p id="seconds">30</p> 

    <script type="text/javascript"> 
     var clock; 



     function timer() { 
      var start = new Date().getTime(); 
      clock = setInterval(function() { 
       var seconds = Math.round(30 - (new Date().getTime() - start)/1000); 
       if (seconds >= 0) 
        document.getElementById('seconds').innerHTML = seconds; 
       else 
        clearInterval(clock); 



        if (seconds==0) {window.location.href="something.com"; 
        return; 
        } 




      }, 1000); 
     } 

function exit(){ 

clearInterval(clock); 

var result = confirm("Are you leaving?"); 
if (result == true) { 
window.location.href="somewhere.com"; 
} 
else { 
timer();} // <-- ???? 
} 


    </script> 
</body> 
</html> 

答えて

1

あなたが何であるかを秒単位で保持する変数を作成することができます。

var sec = seconds; 

変更するには、paramerterとして開始するタイマーを使用して機能timer

function timer (time) 

var clock; 
 
var sec; 
 

 

 
function timer (time) { 
 
    var start = new Date().getTime(); 
 
    clock = setInterval(function() { 
 
    var seconds = Math.round(time - (new Date().getTime() - start)/1000); 
 
    sec = seconds; 
 
    if (seconds >= 0){ 
 
     document.getElementById('seconds').innerHTML = seconds; 
 
    } 
 
    else{ 
 
     clearInterval(clock); 
 
    } 
 
    if (seconds==0){ 
 
     window.location.href="something.com"; 
 
     return; 
 
    } 
 
    }, 1000); 
 
} 
 

 
function exit(){ 
 
    clearInterval(clock); 
 
    var result = confirm("Are you leaving?"); 
 
    if (result == true) { 
 
    window.location.href="somewhere.com"; 
 
    } 
 
    else { 
 
    console.log(sec); 
 
    timer(sec);} // <-- ???? 
 
}
<body onload="timer(30);"> 
 
    <button onclick="exit();">stop</button> 
 
    <p id="seconds">30</p> 
 
</body>

1

実例があります。
seconds変数を関数の外に移動したので、それが持続し、タイマーを再起動するために使用できます。
また、カウントダウン量を変更できるように、timer()関数に引数を追加しました。

粒度は第2レベルであるため、実際のカウントダウン時間は最終的には30秒より長くなる可能性がありますが、このユースケースでは許容されると思います。

var clock; 
 
var seconds; 
 

 
function timer(wait) { 
 
    var start = new Date().getTime(); 
 
    clock = setInterval(function() { 
 
    seconds = Math.round(wait - (new Date().getTime() - start)/1000); 
 
    if (seconds >= 0) 
 
     document.getElementById('seconds').innerHTML = seconds; 
 
    else 
 
     clearInterval(clock); 
 

 
    if (seconds == 0) { 
 
     window.location.href = "something.com"; 
 
     return; 
 
    } 
 
    }, 1000); 
 
} 
 

 
function exit() { 
 

 
    clearInterval(clock); 
 

 
    var result = confirm("Are you leaving?"); 
 
    if (result == true) { 
 
    window.location.href = "somewhere.com"; 
 
    } else { 
 
    timer(seconds); 
 
    } // <-- ???? 
 
} 
 

 
timer(30);
<button onclick="exit();">stop</button> 
 
<p id="seconds">30</p>

+0

おかげで、この1は私を形成する働き:) – wymyszony

関連する問題