JavaScript 与定时器有关方法

时间:2021-10-20 00:23:49

第一部分:setTimeout与clearTimeout

语法:setTimeout(func,millis)
  func必须,函数或执行字符串
  millis必须,间隔时间毫秒(1s=1000ms)
setTimeout  在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
setTimeout  在执行时,它从载入后,每隔指定的时间就执行一次表达式

1、基本用法
   ----------执行一段代码:
   var i=0;
   setTimeout("i='this.string';alert(i)",1000);
   ----------执行一个函数:
   var i=0;
   setTimeout(function(){i+=1;alert(i);},1000);
2、递归调用
  var count=0;
  function count(){
    count++;
    while(count<10){
        setTimeout(count,1000);
    }
  }
3、在类中使用
function User(){
        this.name="xilou";
        this.sex="男";
        this.num=0;
}
User.prototype.count=function(){
        this.num+=1;
        alert(this.num);
        if(this.num>10){return;}
        //下面用四种方法测试,一个一个轮流测试。
        setTimeout("this.count()",1000);//A:当下面的x.count()调用时会发生错误:对象不支持此属性或方法。
        setTimeout("count()",1000);//B:错误显示:缺少对象
        setTimeout(count,1000);//C:错误显示:'count'未定义
        //下面是第四种
        var self=this;
        setTimeout(function(){self.count();},1000);//D:正确
}

4、clearTimeout

要使用 clearTimeout( ), 需要给 setTimout( ) 一个名称:timeoutID ,用timeoutID停止调用。
timeoutID
 ↓
meter1 = setTimeout("count1( )", 1000)
meter2 = setTimeout("count2( )", 1000)
使用meter1 及meter2等 timeoutID 名称可以具有针对某个定时器清除,而互不影响。

 

第二部分:setInterval与clearInterval

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法:setInterval(code,millisec)
  code    必需。要调用的函数或要执行的代码串。
  millisec 必需。周期性执行或调用 code 之间的时间间隔,以毫秒计。
一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

var leftSeconds = 10;
var intervalId;
$(function(){
    $("#btnReg").attr("disabled",true);
    intervalId = setInterval("countDown()",1000);
});
function countDown(){  
   if(leftSeconds <=0){
      $("#btnReg").val("submit");
      $("#btnReg").attr("disabled",false);
      clearInterval(intervalId);
      return;
   }else{
     leftSeconds--;
     $("#btnReg").val("请仔细阅读" + leftSeconds + "秒");
   }
}