将间隔时间更改为随机?
我正在寻找一种方法来改变我的javascript数字计数器的工作方式。现在它每秒都会计数,但我希望它在1秒到15秒之间的随机时间内进行计数。将间隔时间更改为随机?
function startCount(){
timer = setInterval (count, 1000);
}
function count(){
var el = document.getElementById('counter');
var currentNumber = parseFloat(removeCommas(el.innerHTML));
el.innerHTML = addCommas(currentNumber+1);
}
function addCommas(nStr){
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2 + '.00';
}
function removeCommas(aNum){
//remove any commas
aNum=aNum.replace(/,/g,"");
//remove any spaces
aNum=aNum.replace(/\s/g,"");
return aNum;
}
有人可以帮助我将计数时间更改为随机数吗?
假设间隔在1到15秒之间,并在每个间隔后更改。 setIntervsal()
不适合。 setTimeout()
在这里是一个不错的选择,因为等待的时间间隔。每隔下一个时间间隔都会有新的时间等待,并且必须再次调用。随机等待时间通过Math.random()
实现,该函数返回0到1之间的浮点数。使用因子并强制为整数并填充1000毫秒,我们得到所需的间隔。
(A字前一种方案:首先,我以为只是一个固定的随机时间间隔将满足,但问题ariesed,要求什么样的区间)。
function startCount() {
setTimeout(count, 1000 + Math.random() * 14000 | 0);
}
function count() {
var el = document.getElementById('counter');
var currentNumber = parseFloat(removeCommas(el.innerHTML));
el.innerHTML = addCommas(currentNumber + 1);
startCount();
}
我确定OP(和其他读者)赞赏你所作修改的解释。 –
谢谢,你也知道如何改变el.innerHTML = addCommas(currentNumber + 1);到一个随机数 - 例如250到1500之间? – dwayneE
'250 + Math.random()* 1250 | 0“是250的固定部分并且0 ... 1250的随机值被强制为整数。 –
尝试
(Math.floor(Math.random() * 15) + 1)*1000
而不是固定的1000ms的
如果你认为这是答案,那么你应该投票结束而不是重复的问题。 –
使用setTimeout
插件使用随机时间参数在startCount()
中输入setInterval
,并在count
函数结束时调用它。
function startCount()
{
timer = setTimeout (count, Math.floor(Math.random() * 14000) + 1000);
}
function count()
{
var el = document.getElementById('counter');
var currentNumber = parseFloat(removeCommas(el.innerHTML));
el.innerHTML = addCommas(currentNumber+1);
startCount()
}
你想要一个随机但固定的时间间隔,还是应该每个新的超时时间都是随机的? –