Javascript 设定间隔时间
我创建了一个简单的函数,可以在3秒内将值从0计算到某个值。Javascript 设定间隔时间,javascript,setinterval,duration,Javascript,Setinterval,Duration,我创建了一个简单的函数,可以在3秒内将值从0计算到某个值。 以下是小提琴和音乐片段: var number=document.querySelector('.number'); var button=document.querySelector('button'); addEventListener('click',function(){ 计数(数字2500); }) 函数计数(元素、值){ var计数=0; var timerId=setInterval(函数(){ 如果(++计数==值)c
以下是小提琴和音乐片段:
var number=document.querySelector('.number');
var button=document.querySelector('button');
addEventListener('click',function(){
计数(数字2500);
})
函数计数(元素、值){
var计数=0;
var timerId=setInterval(函数(){
如果(++计数==值)clearInterval(timerId);
elem.innerHTML=计数;
},3000元/价值);
}
0
Go
计时器的最小间隔取决于HTML5规范(最初是在现已失效的计时器规范中),以防止计时器触发过快。当计时器调度计时器时(这基本上是setInterval
所做的),一旦嵌套达到5,如果请求的计时器间隔<4ms,则设置为4ms:
如果(!Date.now){
Date.now=函数(){
返回+新日期();
};
}
变量编号=document.querySelector('.number');
var button=document.querySelector('button');
var总和=0;
var last=null;
addEventListener('click',function(){
计数(数字2500);
})
函数计数(元素、值){
var计数=0;
last=日期。现在();
var timerId=setInterval(函数(){
var now=Date.now();
总和+=现在-最后一次;
最后=现在;
如果(++计数==值)clearInterval(timerId);
elem.innerHTML=总和/计数;
},3000元/价值);
}
0
Go
有一个由setTimeout
和setInterval
强制执行的最小延迟。从
延迟超过规定时间的原因
嵌套超时强制>=4ms
历史上,浏览器实现setTimeout()“钳制”:延迟小于“最小延迟”限制的连续setTimeout()调用被强制至少使用最小延迟。最小延迟DOM_MIN_TIMEOUT_值为4ms(存储在Firefox中的首选项中:DOM.MIN_TIMEOUT_值),DOM_钳制_TIMEOUT_嵌套级别为5
事实上,4ms是由HTML5规范指定的,并且在2010年及以后发布的浏览器中是一致的。在(Firefox 5.0/Thunderbird 5.0/SeaMonkey 2.2)之前,嵌套超时的最小超时值为10毫秒
因此,即使您将
3000/2500=1.2
指定为间隔时间,它的作用就像您使用4
作为间隔时间一样。++count
?这是有效的JavaScript吗?@yuriy636是-从技术上讲,setTimeout
/setInterval
函数不会在您给定的超时时间内运行某些内容,而是将其安排在指定的时间内运行。不同之处在于,由于JS是单线程的,所以可能已经在处理其他东西,因此超时/间隔会被放在queue@MiloshioquerySelector
不返回HTML集合,它只返回一个DOM节点。@T.J.Crowder我明白了,这绝对足够简短和准确。谢谢你的提示,我一定会宣传的:)