js中怎么识别正在运行的setTimeout的函数名?
js中怎么识别正在运行的setTimeout的函数名?或者直接清空所有正在运行的setTimeout的函数。有这种功能吗?我想写个js幻灯片,让他自动播放。我知道clea...
js中怎么识别正在运行的setTimeout的函数名?或者直接清空所有正在运行的setTimeout的函数。有这种功能吗?我想写个js幻灯片,让他自动播放。
我知道clearInterval和clearTimeout的用法,但是清除正在运行的setInterval和setTimeout,需要知道正在运行的函数名。而我写的幻灯片,就是让他自动播放时,有人点击一个图,所有setInterval和setTimeout的函数必须停止,但我不知道它们的名字,明白了吗? 展开
我知道clearInterval和clearTimeout的用法,但是清除正在运行的setInterval和setTimeout,需要知道正在运行的函数名。而我写的幻灯片,就是让他自动播放时,有人点击一个图,所有setInterval和setTimeout的函数必须停止,但我不知道它们的名字,明白了吗? 展开
4个回答
2015-06-19 · 知道合伙人教育行家
关注
展开全部
首先从其中的两个单词来理解:
Timeout:<主美>(球类比赛中的)暂时休息,(工作时的)工间休息;计算机里多为"超时",或者"时间到了"的意思
Interval:间隔, 距离, 幕间休息,时间间隔
由他们各自代表的 setTimeout 函数表时指定的时间到了,执行某个指定的函数,这时候它的使命即告完成,只执行一次。setInterval 函数则是每隔指定的时间就会执行指定的函数,如果不清除,将执行无数次。setInterval函数的行为更像是很多编程语言中的Timer控件的行为。
清除计数器的函数分别是 clearTimeout 和 clearInterval, 功能说明如下
var timer1 = setTimeout("foo",1000); //设定foo函数将在1000毫秒后执行一次
.........//do something
clearTimeout(timer1); //如果程序执行到这里,以setTimeout开始计数时1000毫秒未到,
//clearTimeout后,foo将得不到执行
//如果1000毫秒已过,foo已被触发执行,就没什么意义了
vartimer2 = setInterval("foo",1000); //设定从现在计时起,每1000毫秒执行1次foo
.........//do something
clearInterval(timer2); //以后foo将不再触发执行了
所以这样一个细节的被忽略了,也就长久以来用setTimeout+递归来模拟了setInterval的行为,如下代码
function foo(){
.......//do something
setTimeout("foo",1000);
}
Timeout:<主美>(球类比赛中的)暂时休息,(工作时的)工间休息;计算机里多为"超时",或者"时间到了"的意思
Interval:间隔, 距离, 幕间休息,时间间隔
由他们各自代表的 setTimeout 函数表时指定的时间到了,执行某个指定的函数,这时候它的使命即告完成,只执行一次。setInterval 函数则是每隔指定的时间就会执行指定的函数,如果不清除,将执行无数次。setInterval函数的行为更像是很多编程语言中的Timer控件的行为。
清除计数器的函数分别是 clearTimeout 和 clearInterval, 功能说明如下
var timer1 = setTimeout("foo",1000); //设定foo函数将在1000毫秒后执行一次
.........//do something
clearTimeout(timer1); //如果程序执行到这里,以setTimeout开始计数时1000毫秒未到,
//clearTimeout后,foo将得不到执行
//如果1000毫秒已过,foo已被触发执行,就没什么意义了
vartimer2 = setInterval("foo",1000); //设定从现在计时起,每1000毫秒执行1次foo
.........//do something
clearInterval(timer2); //以后foo将不再触发执行了
所以这样一个细节的被忽略了,也就长久以来用setTimeout+递归来模拟了setInterval的行为,如下代码
function foo(){
.......//do something
setTimeout("foo",1000);
}
展开全部
先设置一个值,
var timeid = setTimeout(...);
然后清空正在运行的
就直接
clearTimeout(timeid)
就可以了
var timeid = setTimeout(...);
然后清空正在运行的
就直接
clearTimeout(timeid)
就可以了
更多追问追答
追问
关键是做幻灯片哦, 你不知道现在运行setTimeout的是哪个函数。如果都加上去又会出错
追答
什么意思?
setTimeout(function(){},300);
里面的function就是要执行的函数,只要用一个值记录这个执行的setTimeout,
如果突然不需要了.就可以用
clearTimeout
来清除这个值..那么这个执行的setTimout就不会执行了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么不用setInterval和clearInterval?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有.叫clear什么的.不怎么用这个清空的功能.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询