网站地图    收藏   

主页 > 前端 > javascript >

javascript中setInterval与setTimeout用法介绍

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 本文章来给各位朋友详细介绍关于setInterval与setTimeout用法介绍,有需要了解的朋友可参考参考。...

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

clearInterval() 方法可以取消该周期性的方法调用。

当setInterval调用执行完毕时,它将返回一个timer ID,将来便可以利用该值对计时器进行

访问,如果将该ID传递给clearInterval,便可以终止那段被调用的过程代码的执行了.

 
js setInterval()用法


倒计时实例

 代码如下 复制代码

<script language="javascript">
function timer(){

var value=Number(document.all['time'].value);
if(value==2){
     timeID=window.setInterval("change()",1000);
clearInterval(timeID);
}
else window.setInterval("change()",1000);
}

function change(){

var value=Number(document.all['time'].value);
if (value>1) document.all['time'].value=value-1;
else {
    document.all['time'].value="同意";
return false;
}
}
</script>


<body onLoad="timer()">
<input name="time" value="10" type="button" style="width:40px;" />
</body>


js  clearInterval() 方法

setTimeout()在js类中的使用方法  
setTimeout (表达式,延时时间)
setTimeout(表达式,交互时间)
延时时间/交互时间是以豪秒为单位的(1000ms=1s)

setTimeout  在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
setTimeout 在执行时,它从载入后,每隔指定的时间就执行一次表达式

1,基本用法:
   执行一段代码:

 代码如下 复制代码
   var i=0;
   setTimeout("i+=1;alert(i)",1000);
   执行一个函数:
   var i=0;
   setTimeout(function(){i+=1;alert(i);},1000);
  

   //注意比较上面的两种方法的不同。

   下面再来一个执行函数的:
 

 代码如下 复制代码

  var i=0;
   function test(){
       i+=1;
       alert(i);
   }
   setTimeout("test()",1000);
   也可以这样:
   setTimeout(test,1000);

   总结:
   setTimeout的原型是这样的:
   iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
  
  setTimeout有两种形式

  setTimeout(code,interval)
  setTimeout(func,interval,args)

 

其中code是一个字符串
  func是一个函数.

  注意"函数"的意义,是一个表达式,而不是一个语句.
  比如你想周期性执行一个函数

 代码如下 复制代码
  function a(){
      //...
  }
  可写为
  setTimeout("a()",1000)
  或
  setTimeout(a,1000)

  这里注意第二种形式中,是a,不要写成a(),切记!!!

setInterval、setTimeout不能传递带参数的函数的解决方案


在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,
这就需要想方法解决。
一、采用字符串形式:——(缺陷)参数不能被周期性改变
setInterval("foo(id)",1000);
二、匿名函数包装 (推荐)

 代码如下 复制代码

window.setInterval(function()
{
foo (id);
}, 1000);

这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;
三、定义返回无参函数的函数

 代码如下 复制代码

function foo(id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id);
}
}
window.setInterval(_foo(id),1000);

这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。
在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
四、修改setInterval

 代码如下 复制代码

function foo(id)
{
alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
}
_sto(_cb,timeout);
}
window.setInterval(hello,3000,userName);

以上的所有方法也适合setTimeout。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论