倒计时器,设定点后数量减少?

时间:2017-05-04 16:05:00

标签: javascript

我有一个工作倒数计时器,从30分钟开始。

仅剩3分钟(因此在27分钟后)我希望数字250从剩下的3分钟到倒计时结束以随机间隔减少。

有什么想法吗?

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>

1 个答案:

答案 0 :(得分:0)

也许使用这样的东西(我希望我清楚地理解这个问题):

只需在条件中使用if / else即可:当超过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>