2017-05-04 7 views
0

私は30分に始まる働くカウントダウンタイマーを持っています。カウントダウンタイマーは設定ポイントの後に減少しますか?

3分だけ残っているので(27分後)、3分からカウントダウンの最後までランダムな間隔で250を減らしたいと思います。

アイデア?

https://codepen.io/anon/pen/bWoGrb

// Stopwatch 
 
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.textContent = minutes + ":" + seconds; 
 

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

 
window.onload = function() { 
 
    var thirtyMinutes = 60 * 30, 
 
    display = document.querySelector('#stopwatch'); 
 
    startTimer(thirtyMinutes, display); 
 
};
<div id='stopwatch'></div>

+0

あなたは、数250にどうするかをより詳細に説明できますか?私はあなたがカウントダウンが終わったときに== 0がほしいと思うが、あなたはそれを言及しなかった。何回それを減らすべきですか?それが減少するたびに同じ量だけ減少しなければなりませんか? – James

+0

こんにちはジェームズ、理想的には3分を残して、250は無作為に減少しますが、無作為の間隔で10分を下回ります。 250秒から3秒後に244に、次に244から5秒後に240に、次に2秒後に233に等しくなります。 これはあまりに複雑すぎると、ランダムな間隔であれば、 はい、最後に0になるはずです。 乾杯! –

答えて

0

たぶん、この(私は明確に質問を理解願っています)のようなものを使用します。ただ、条件内であれば/他の言いたいことを使用して

を: 60 * 3を超えると正常になり、60 * 3秒未満では何もする機会がありません

// Stopwatch 
 
function startTimer(duration, display) { 
 
    var timer = duration, minutes, seconds; 
 
    setInterval(function() { 
 
     if(timer > 60*3 || Math.random() < 0.25) { 
 
      minutes = parseInt(timer/60, 10) 
 
      seconds = parseInt(timer % 60, 10); 
 

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

 
      display.textContent = minutes + ":" + seconds; 
 

 
      if (--timer < 0) { 
 
       timer = duration; 
 
      } 
 
     } else { 
 
      /* do not reduce the timer to wait 1 interval more */ 
 
      /* or maybe do like `timer -= Math.random()` if you want to reduce it faster */ 
 
     } 
 
    }, 1000); 
 
} 
 

 
window.onload = function() { 
 
    var thirtyMinutes = 60 * /*30*/ 4, // just set to 4 to see faster 
 
    display = document.querySelector('#stopwatch'); 
 
    startTimer(thirtyMinutes, display); 
 
};
<div id='stopwatch'></div>

関連する問題