我正在尝试使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;
}
答案 0 :(得分:1)
您可以对变量使用闭包,并在回调内部进行检查,如果大于想要的结果。
此提案使用setInterval
进行计数,setTimeout
等待时间为5秒,并使用新的随机值重新启动。
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;
答案 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)