这篇文章里我们看一下javascript 中的如何使用setTimeout(), clearTimeout(), setInterval() 和 clearInterval() 几个与时间设置有关的函数。使用这些函数可以设置定时器和延时任务,并且很方便。
windows.setTimeout()函数允许设定一定的延时,来执行所要执行的任务。设置的任务将在函数被调用后的数秒之后被执行。调用方法如下:
setTimeout ( expression, timeout );
expression 是到达延时时间后要执行的javascript 代码
setTimeout 函数将返回数字类型的延时标志,这个返回值会被clearTimeout函数调用
简单的例子:
<input type="button" name="clickMe" value="Click me and wait!"
onclick="setTimeout('alert(\'Surprise!\')', 5000)"/>
再点击按钮5秒后弹出信息:"Surprise!"
一个较完整的例子:
<script type="text/javascript">
function setToRed ( )
{
document.getElementById("colourButton").style.color = "#FF0000";
setTimeout ( "setToBlack()", 2000 );
}
function setToBlack ( )
{
document.getElementById("colourButton").style.color = "#000000";
}
</script>
<input type="button" name="clickMe" id="colourButton" value="Click me and wait!" onclick="setToRed()"/>
从上面的例子可以看到,按钮被点击后,按钮文字变成红色持续两秒钟,随后变成黑色字体。
<script type="text/javascript">
var alertTimerId = 0;
function alertTimerClickHandler ( )
{
if ( document.getElementById("alertTimerButton").value == "Click me and wait!" )
{
// Start the timer
document.getElementById("alertTimerButton").value = "Click me to stop the timer!";
alertTimerId = setTimeout ( "showAlert()", 3000 );
}
else
{
document.getElementById("alertTimerButton").value = "Click me and wait!";
clearTimeout ( alertTimerId );
}
}
function showAlert ( )
{
alert ( "Too late! You didn't stop the timer." );
document.getElementById("alertTimerButton").value = "Click me and wait!";
}
</script>
<input type="button" name="clickMe" id="alertTimerButton" value="Click me and wait!" onclick="alertTimerClickHandler()"/>
有的时候在延时程序完成之前要结束延时任务,会用到clearTimeout,其调用方式为:
clearTimeout ( timeoutId );
timeoutId 是setTimeout函数被调用后返回的延时标志
下面的例子当用户点击按钮3秒钟后,会弹出对话框信息,但是在此期间用户可以再次点击按钮结束延时,阻止窗口的弹出。
<script type="text/javascript">
var alertTimerId = 0;
function alertTimerClickHandler ( )
{
if ( document.getElementById("alertTimerButton").value == "Click me and wait!" )
{
// Start the timer
document.getElementById("alertTimerButton").value = "Click me to stop the timer!";
alertTimerId = setTimeout ( "showAlert()", 3000 );
}
else
{
document.getElementById("alertTimerButton").value = "Click me and wait!";
clearTimeout ( alertTimerId );
}
}
function showAlert ( )
{
alert ( "Too late! You didn't stop the timer." );
document.getElementById("alertTimerButton").value = "Click me and wait!";
}
</script>
<input type="button" name="clickMe" id="alertTimerButton" value="Click me and wait!" onclick="alertTimerClickHandler()"/>
和setTimeout()函数相似,setInterval函数的定义方法为setInterval(expression, interval);当使用setTimeout函数做如下操作时,可以考虑用setInterval函数替换
setTimeout ( "doSomething()", 5000 );
function doSomething ( )
{
// (do something here)
setTimeout ( "doSomething()", 5000 );
}
setInterval方法:
setInterval ( "doSomething()", 5000 );
function doSomething ( )
{
// (do something here)
}
当需要提供连续精确的时间或时间间隔时setInterval将是最好的选择
和clearTimeout函数一样,通过setInterval返回的ID值,调用clearInterval方法结束一个setInterval,下面是一个可运行的setInterval和clearInterval函数简单实例:
<script type="text/javascript">
var wooYayIntervalId = 0;
function wooYayClickHandler ( )
{
if ( document.getElementById("wooYayButton").value == "Click me!" )
{
// Start the timer
document.getElementById("wooYayButton").value = "Enough already!";
wooYayIntervalId = setInterval ( "wooYay()", 1000 );
}
else
{
document.getElementById("wooYayMessage").innerHTML = "";
document.getElementById("wooYayButton").value = "Click me!";
clearInterval ( wooYayIntervalId );
}
}
function wooYay ( )
{
if ( Math.random ( ) > .5 )
{
document.getElementById("wooYayMessage").innerHTML = "Woo!";
}
else
{
document.getElementById("wooYayMessage").innerHTML = "Yay!";
}
setTimeout ( 'document.getElementById("wooYayMessage").innerHTML = ""', 500 );
}
</script>
<div id="wooYayMessage" style="height: 1.5em; font-size: 2em; color: red;"></div>
<input type="button" name="clickMe" id="wooYayButton" value="Click me!" onclick="wooYayClickHandler()"/>
引用网址:http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
分享到:
相关推荐
JavaScript中setTimeout和setInterval函数的传参及调用_.docx
Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等等。但它们的应用是有区别的。 ...
主要介绍了JavaScript中setTimeout和setInterval函数的传参及调用,着两个函数可以把要执行的代码在设定的一个时间点插入js引擎维护的一个代码队列中,需要的朋友可以参考下
NULL 博文链接:https://rainbow702.iteye.com/blog/1668935
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
unref()和ref()用法非常的简单,就是取消和回复setTimeout和...//取消setTimeout和setInterval函數的調用 timer.ref();//恢復setTimeout和setInterval函數的調用 是不是超级简单,如果还不明白,请放过javascript吧
timercpp:为C 开发提供类似于Javascript中的setTimeout和setInterval功能
Javascript定时器(二)——setTimeout与setInterval 在 http://www.cnblogs.com/strick/p/3983904.html 有说明
注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止 参数 描述 code 必需,要调用的函数后要执行的 JavaScript 代码串。 millisec 必需,在执行代码前需等待的毫秒数。 setTimeinterval ...
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。
js 代码中执行循环事件时,经常会用到 setInterval 和 setTimeout 这两个方法,关于这两个方法的细节这里不详细讨论了,简要分享下在需要停止循环事件的时候该如何操作。 (1)setInterval 方法可按照指定的周期(以...
主要介绍了JavaScript中从setTimeout与setInterval到AJAX异步,非常不错,具有参考借鉴价值,需要的朋友可以参考下
主要帮助大家学习理解javascript定时器中的setTimeout与setInterval,从实例出发进行深入探讨,感兴趣的小伙伴们可以参考一下
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。
所以其实setTimeout和setInterval所谓的“异步调用”事实上是通过将代码段插入到代码的执行队列中实现的。 而如何计算插入的时间点呢?自然是要用到我们所说的timer,也就是计时器。当执行setTi
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 代码如下: function obj() { this.fn = function() { alert(...
Javascript中的SetTimeout和SetInterval函数很方便,把他们移植到c#中来。