首页主机停止setinterval(js停止setInterval 调用)

停止setinterval(js停止setInterval 调用)

编程之家2024-02-1090次浏览

一、JS关于中止setInterval()的方法,为什么会进入死循环呢

setInterval()自动执行,一般写的话是这样的:

停止setinterval(js停止setInterval 调用)

var auto=setInterval(function(){

var i=0;

i++;

if(i==200){

clearInterval(auto);

}

停止setinterval(js停止setInterval 调用)

},20)

setInterval(要执行函数名,毫秒数);

一般在第一个是写一个匿名函数,在匿名函数里面再写要执行的函数就是function(){

函数1;

函数2;

}

停止setinterval(js停止setInterval 调用)

我没有写函数直接在匿名函数里面写了代码,你也可以写在外面

function kaishi(){

var i=0;

i++;

if(i==200){

clearInterval(auto);

}

var auto=setInterval(function(){

kaishi();

}

},20)

setInterval是创建自动执行(参数是执行函数,执行间隔时间),clearInterval是清除之前创建的(参数就是之前创建的变量),

二、js代码,关于setInterval无法停止的问题!

那是因为,js在,var是声明变量

但有点不同的是,看是在哪里声明,

如果,var是在函数方法function之内声明的,那变量只作用于该函数本身

如果是在函数方法之外声明的,那就是全局变量,无论在函数内函数外都能起作用(当然,在声明之前的代码是作用不到的)

根据这个原理

clearInterval(s)这个s根本就不存在!

改正如下:

<script>

vars,b=0;

functionrun(){s=setInterval("a()",40)}

functiona(){

vari=document.body.scrollTop,i=i*0.5;

window.scrollTo(0,i)

if(b<6){

b++;

}else{

clearInterval(s)

}

}

</script>

哦,你要有个错误

就是在被循环的函数内声明变量b,并且赋值为0;

那么,这个函数每运行一次,无论b的值是多少,是不是用于都会被归为0呢?

是不是永远的是小于6呢?

既然是小于6,那有怎么会停止呢?

三、js timer启动两次怎么停止呀

楼主你首先得分清setInterval和setTimeout的区别。

var handler=setInterval(action, intervalTime):从运行这行代码开始,每隔intervalTime(单位是毫秒)的时间就把action执行一次,直到运行至调用clearInterval(handler)为止。

var handler= setTimeout(action, delayTime):从运行这行代码开始计时,等到delayTime(单位是毫秒)的时刻立即把action执行一次。在没到达delayTime时刻之前你可以调用clearTimeout(handler)来清除这次调用。

现在来看你的问题,

1.为啥timer还可以用?

var timer;

timer= window.setInterval("Readcadetimer()", 1000);

你定义了一个timer变量,然后将计时器的句柄赋给它(此处的timer变量实际上就是我上面说的handler,是定时器的句柄)。运行至此处则每隔1秒(1000毫秒)运行Readcadetimer()一次。

你在没有将该定时器清除的情况下,又写了一句:

timer= window.setInterval("Readcadetimer()", 1000);

这时候你又创建了一个定时器,然后将句柄赋给了timer,第一个定时器的句柄虽然再也没有索引了,但是它实实在在存在。第二个定时器的作用仍然是每隔1秒(1000毫秒)运行Readcadetimer()一次。

下一句clearInterval(timer);

这句将你创建的第二个计时器给清除了,但是第一个计时器还在运行,所以你觉得好像timer还可以用一样。

2. timer这个数字代表啥意思?

timer没啥意思,他就是一个持有计时器对象的句柄,就相当于你想用你之前创建的计时器的时候,你可以通过timer找到它。

看你的代码需求貌似是想要把Readcadetimer()执行两次然后就结束,这里奉上代码。

请将你Readcadetimer()的定义放在我的代码之前。

varcounter=0,

handler=setInterval(function(){

counter++;

if(counter>2){

clearInterval(handler);

return;

}

Readcadetimer()

},1000);

asp美国空间(美国asp空间怎么配置环境)修改开机画面(win10如何修改开机画面)