JavaScript 与定时器有关方法

本文深入解析JavaScript中的setTimeout与clearTimeout方法的使用,包括基本用法、递归调用、在类中使用及clearTimeout的原理。同时介绍了setInterval与clearInterval的用法,通过实例演示如何实现倒计时功能。

第一部分: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 + "秒");
   }
}

转载于:https://www.cnblogs.com/boonya/archive/2012/09/13/2684132.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值