window对象有两个主要的定时方法,分别是setTimeout() 和 setInteval() 他们的语法基本上相同,但是完成的功能取有区别.
setTimeout()方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。可以用该方法设置暂停。该方法接受两个参数,要执行的代码和在执行它之前要等待的毫秒数(1/1000秒)。第一个参数可以是代码串(与eval()函数的参数相同),也可以是函数指针。例如,下面的代码都在1秒钟后显示一条警告:
setTimeout("alert('Hello World!')",1000);
setTimeout(function(){ alert('Hello World!'); },1000);
当然,还可以引用以前定义的函数:
function sayHelloWorld(){
alert("Hello World!");
}
setTimeout(sayHelloWorld,1000);
调用setTimeout()时,它创建一个数字暂停ID,与操作系统中的进程ID相似。暂停ID本质上是要延迟的进程ID,再调用 setTimeout()后,就不应该再执行它的代码。要取消还未执行的暂停,可调用clearTimeout()方法,并将暂停ID传递给它:
var iTimeoutId = setTimeout("alert('Hello World!')",1000);
alert(iTimeoutId);
clearTimeout(iTimeoutId);
其中,iTimeoutId 是一串数字,例如 38734218
“为什么要定义暂停,又在执行它之前将其取消呢?”请考虑在大多数应用程序中可见的工具提示。当把鼠标移动到一个按钮上时,停留一会,等待出现黄色的文本框,提示该按钮的功能。如果只是短暂的把鼠标该按钮上,然后很快将其移动到另一个按钮上,那么第一个按钮的工具提示就不会显示,这就是要在执行暂停代码前取消它的原因。因为你在执行代码前只想等待指定的时间量。如果用户的操作产生了不同的结果,则要取消该暂停。
setInterval()方法则是表示间隔一定时间反复执行某操作。时间间隔与暂停的运行方式相似,只是它无限此地每隔指定的时间段就重复执行一次指定的代码。可调用setInterval()方法设置时间间隔,它的参数与setTimeout()相同,是要执行的代码和每次执行之间等待的毫秒数。例如:
setInterval("alert('Hello world!')",1000);
setInterval(function() { alert("Hello world!"); },1000);
function sayHelloWorld(){
alert("Hello World!");
}
setInterval(sayHelloWorld,1000);
此外,与setTimeout()类似,setInterval()方法也创建时间间隔ID,以标识要执行的代码。clearInterval()方法可用这个ID阻止再次执行该代码。显然。这一点在使用时间间隔时更重要,因为如果不取消时间间隔,就会一直执行它,直到页面被卸载为止。下面是时间间隔用法的一个常见示例:
var iNum = 0;
var iMax = 100;
var iIntervalId = null;
function incNum(){
iNum++;
if(iNum == iMax){
clearInterval(iIntervalId);
}
}
iIntervalId = setInterval(incNum, 500);
在这段代码中,每隔500毫秒就对数字iNum进行一次增量运算,直到它达到最大值(iMax), 此时该时间间隔将被清除。也可以用暂停实现该操作,这样即不必跟踪时间间隔的ID,代码如下:
var iNum = 0;
var iMax = 100;
function incNum(){
iNum++;
if(iNum != iMax){
setTimeout(incNum,500);
}
}
setTimeout(incNum,500);
这段代码使用链接暂停,即setTimeout()执行的代码页调用了setTimeout()。如果在执行过增量运算后,iNum不等于 iMax,就调用setTimeout()方法。不必跟踪暂停ID,也不必清除它,因为代码执行后,将销毁暂停ID。
如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行(setTimeout( ) 预设只是执行一次,但我们可以使用一个循环方式,使到一个setTimeout( ) 再启动自己一次, 就会使到第二個 setTimeout( ) 执行, 第二个又启动第三个, 这样循环下去, 这 setTimeout( ) 就会不断执行)。如果要清除计数器需要根据使用的方法不同,调用不同的清除方法:
var timeID = null;
//timeout方法
timeID=setTimeout('northsnow()',1000);
clearTimeout(timeID);
//interval方法
timeID=setInterval('northsnow()',1000);
clearInteval(timeID);
<script type="text/javascript">
var count = 0;
var timeID = null;
function counter() {
count++;
$("#count").html(count + '%');
timeID = setTimeout("counter()", 1000);//注意:执行的函数需要加引号,否则会报错的
if (count > 10) {
clearTimeout(timeID); //注意:clearTimeout(timeID)必须位于setTimeout()之后,不能是之前,原因很容易呦!
}
}
$(function() {
counter();
});
</script>
<script type="text/javascript">
var count = 0;
var timeID = null;
function counter() {
count++;
$("#count").html(count + '%');
if (count > 10) {
clearInterval(timeID);
}
}
$(function() {
timeID = setInterval('counter()', 1000); //注意:执行的函数需要加引号,否则会报错的
});
</script>
分享到:
相关推荐
JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别
给c#添加SetTimeout和SetInterval函数.docx
Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等等。但它们的应用是有区别的。 ...
JS中定时执行,setTimeout和setInterval的区别 <br>setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操
今天先学下setTimeout和setInterval的使用。 一、setTimeout超时计时器(和GCD中的after类似) 在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法。当调用setTime()时回调函数会在...
JavaScript中setTimeout和setInterval函数的传参及调用_.docx
timercpp:为C 开发提供类似于Javascript中的setTimeout和setInterval功能
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
主要介绍了vue 解决setTimeOut和setInterval函数无效报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
大概半年前发表过一篇关于setTimeout和setInterval的文章,但是现在回去仔细一看发现其实存在很多不足以及错误。事实上,setTimeout和setInterval并没有我们字面上理解的那么简单。要真正掌握并理解这两个方法,还得...
setTimeout和setInterval的作用只是把你要执行的代码在你设定的一个时间点插入js引擎维护的一个代码队列中, 插入代码队列并不意味着你的代码就会立马执行的,理解这一点很重要. 而且setTimeout和setInterval还有点不...
unref()和ref()用法非常的简单,就是取消和回复setTimeout和...//取消setTimeout和setInterval函數的調用 timer.ref();//恢復setTimeout和setInterval函數的調用 是不是超级简单,如果还不明白,请放过javascript吧
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。
无意中测试AJAXRequest浏览器兼容性的时候,发现AJAXRequest.update方法在某些情况下在IE里有问题,经过测试找到是setTimeout和setInterval的问题。 问题出现在当调用AJAXRequest.update方法时,如果带了更新间隔及...
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。而这篇文中主要给大家介绍的是关于JS中setTimeout和setInterval最大延时值的相关问题,需要的朋友们...
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。
Javascript中的SetTimeout和SetInterval函数很方便,把他们移植到c#中来。
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 代码如下: function obj() { this.fn = function() { alert(...
主要介绍了VUE中setTimeout和setInterval自动销毁案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧