如何制作JS计数器&重启?

时间:2017-01-31 08:42:41

标签: javascript html

我正在尝试使JS计数器达到一个随机数,并在达到数字后自行重置,然后在5秒内重复一次。

例如:随机数为0.05。

0.00 > 0.01 > 0.02 > 0.03 > 0.04 > 0.05 > 0.00

<div id="current">0</div>

JS

var randomNum = Math.random();

if ( current <= randomNum ) {
    for (current = 0; current < randomNum; current+=0.01) {
        setInterval(function(){
            current += .01;
        },1000);    } }
    else {
        current = 0;
    }

2 个答案:

答案 0 :(得分:1)

您可以对变量使用闭包,并在回调内部进行检查,如果大于想要的结果。

此提案使用setInterval进行计数,setTimeout等待时间为5秒,并使用新的随机值重新启动。

&#13;
&#13;
function startInterval() {
    var randomNum = Math.floor(Math.random() * 8) + 2,
        current = 0,
        interval = setInterval(function() {
            current += .01;
            if (current > randomNum / 100) {
                current = 0;
                clearInterval(interval);
                setTimeout(startInterval, 5000);
            }
            document.getElementById('current').innerHTML = current.toFixed(2);
        }, 1000);
}

startInterval();
&#13;
<div id="current">0</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

将一个计数器变量保留在循环之外,然后在达到所需值时清除它。

var randomNum = Math.random() * 25;
var currentValue = 0;
var counter;
counter = setInterval(function() {
  if (currentValue < randomNum) {
    //Carefull with "0.1" as JavaScript doesn't like it!
    currentValue = (currentValue * 10 + 1) / 10
  }
  if (currentValue > randomNum) {
    currentValue = randomNum;
    clearInterval(counter);
  }
  console.log(currentValue, '/', randomNum)
}, 1000 / 60)