如何在X秒内运行javascript函数?
我正在使用如何在X秒内运行javascript函数?,javascript,function,period,Javascript,Function,Period,我正在使用setInterval运行一个Javascript函数,该函数在div中生成一个新的随机整数。当我单击div时计时器启动。我在五秒钟后从生成新数字的形式停止它时遇到问题 使用setTimeout,我在5秒后隐藏div;这阻止了随机数,但我失去了div 如何有效地停止在div中生成数字,而不将其隐藏 HTML: 只需使用一个计数器记录间隔已勾选的次数,然后使用clearInterval停止: var count = 0; var intervalID = setInterval(func
setInterval
运行一个Javascript
函数,该函数在div中生成一个新的随机整数。当我单击div时计时器启动。我在五秒钟后从生成新数字的形式停止它时遇到问题
使用setTimeout
,我在5秒后隐藏div;这阻止了随机数,但我失去了div
如何有效地停止在div
中生成数字,而不将其隐藏
HTML:
只需使用一个计数器记录间隔已勾选的次数,然后使用
clearInterval
停止:
var count = 0;
var intervalID = setInterval(function() {
// generate your random number
count++;
if (count === 5) {
clearInterval(intervalID);
}
}, 1000);
匆忙写下的东西,但您要做的是跟踪间隔句柄,然后清除它。您可以使用
setTimeout
var forXsecs = function(period, func) {
var handle = setInterval(func, 1000);
setTimeout(function() { clearInterval(handle); }, period * 1000);
}
时机并不完美。马特的回答也行
另一个选择是对Matt的答案稍作修改,删除setInterval
,只使用超时
var count = 0;
var forXsecs = function(period, func) {
if(count < period) {
func();
count++;
setTimeout(function() {forXsecs(period, func);}, 1000);
} else {
count = 0; //need to reset the count for possible future calls
}
}
var计数=0;
var forXsecs=函数(周期,func){
如果(计数<周期){
func();
计数++;
setTimeout(function(){forXsecs(period,func);},1000);
}否则{
count=0;//需要为将来可能的调用重置计数
}
}
如果你只想让它每秒运行一次,然后运行5次,你可以这样做:
HTML:
<div id="5seconds"></div>
var count= 0;
setInterval(function(){
if(count < 5){
document.getElementById('5seconds').innerHTML = Math.random();
count++
}
},1000);
JS:
<div id="5seconds"></div>
var count= 0;
setInterval(function(){
if(count < 5){
document.getElementById('5seconds').innerHTML = Math.random();
count++
}
},1000);
var计数=0;
setInterval(函数(){
如果(计数小于5){
document.getElementById('5seconds').innerHTML=Math.random();
计数++
}
},1000);
这将每秒生成一个随机数。在5秒钟过去之前,您应该使用
clearInterval
停止计时器
为此,您需要传入从setInterval
函数(创建它)返回的计时器的id(或句柄)
我建议从正在执行的函数中清除间隔计时器(使用clearInterval
)
var elm=document.querySelector(“div.container”);
var-cnt=0;
var-timerID;
函数generateNumber()
{
cnt+=1;
elm.innerText=cnt;
如果(cnt>=5){
清除间隔(timerID);
}
}
timerID=window.setInterval(generateNumber,1000)代码>
.container{显示:块;最小宽度:5em;线条高度:5em;最小高度:5em;背景色:白烟;边框:0.1em白烟;}
1s间隔超过5s
发布您当前的代码,以便我们看到您所做的。div与生成随机数有什么关系?这个问题毫无意义。发布一些代码。你可以做一个超时,然后根据创建时返回的句柄停止间隔。我闻到一个学校项目。。。阅读您正在寻找的是clearInterval
。跟踪setInterval
回调已触发多少次,并在第五次后调用clearInterval
以停止再次触发。请注意,如果这对你很重要的话,时间安排也不会完美。太感谢你了。在发布问题之后,我做了类似的事情:如果(count==5){div.style.display='none';}
。但是,您的解决方案非常完美。多谢各位