setInterval和setTimeout是干什么的?
JS 中设置延时的函数主要有两个:setInterval和setTimeout。这两个函数的区别在于:
setInterval
表示的是循环执行,执行无数次直至清除循环
setTimeout
表示的是延迟执行,只执行一次。
这两个函数分别对应两个清除函数:
clearTimeout(对象)
//清除已设置的setTimeout对象 >clearInterval(对象)
// 清除已设置的setInterval对象
下面讲解两种函数的用法
setInterval怎么用?
setInterval(function,interval[,arg1,arg2,….argn])`
上面这是setInterval的完整参数,其中方括号中的arg都是可以缺省的,表示的是要传给function的参数。为了能让清除函数找到这个循环对象,我们还要给这个定时器起一个名字。下面看例子:
- 无参函数的调用
var MyName=setInterval(hello,1000);//这里每隔一秒调用一次hello函数,这个函数没有参数
function hello(){
alert("你好呀");
}
document.onclick=clearInterval("MyName");//点击就会清除循环
- 有参函数的调用
var MyName=setInterval(hello,1000,100,"jessie");//这里每隔一秒调用一次hello函数,这个函数有两个参数
function hello(number,str){
alert("你好呀,我叫"+str+"我最喜欢的数字是:"+number);
}
document.onclick=clearInterval("MyName");
- 匿名函数调用
var MyName=setInterval(function(){
alert("你好呀");
},1000);//这里每隔一秒调用一次匿名函数,但是没办法传参数了
document.onclick=clearInterval("MyName");
上面这三个函数虽然都设置了点击清楚循环,但实际上网页每隔一秒跳出一个弹窗,所以你只有在两次弹窗间隙赶紧点击才可以清除,哈哈哈哈
setTimeout怎么用?
应该说
setTimeout
和setInterval
用法差不多,只不过功能不一样,这个是延迟固定时间后再执行。那么你在执行前还是有机会调用clearTimeout
来清除这个延时函数的。还是给个代码的例子吧~
- 就比如说考试系统超时会自动提交这个例子:
var myTime=setTimeout(submitTest,60000);//60秒后调用`submitTest`函数。
document.onclick=clearTimeout("myTime");//在此期间如果发生点击事件,就不再延迟执行`submitTest`函数。
function submitTest(){
alert("考试超时,已自动提交试卷!");
myForm.submit();
}