如何在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';}
。但是,您的解决方案非常完美。多谢各位