一个javascript秒表类

目的:一个秒表类,开始计时后,可以暂停,可以继续,可以返回总共计时时间,可在设置回调函数不断刷新页面,同时可以记录暂停次数。返回时间为总共计时毫秒数

var Stopwatch=function(){"use strict";
  var that={};
  that.showtime=500;                    //默认回调间隔时间
  that.run=false;                       //记录运行状态
  that.startTime=0;			//开始计时时间
  that.pause={sum:0,num:0,time:0};
  that.onShow=function(time){};		//设置回调函数
  that.start=function(){		//开始计时返回true 若早已开始返回false
    if(that.run==false){		//如果没有计时
      that.run=true;			//开始计时
      var nowTime=new Date();
      if(that.startTime==0)that.startTime=nowTime.getTime();		//若计时起始值为0,设置当前为起始值
      if(that.pause.time>0){						//若在上次停止时间大于0,说明之前暂停了
	that.sum+=nowTime.getTime()-that.pause.time;			//记录暂停总时间
      }return true;
    }return false;
  };
  that.stop=function(){		//停止返回true,若不需要停止,返回false
    if(that.run==true){			//正在计时
      that.run=false;			//停止
      that.pause.num++;			//暂停次数增加
      var nowTime=new Date();
      that.pause.time=nowTime.getTime(); //记录暂停其实时间
      return true;
    }return false;
  };
  that.get=function(){	//返回当前总耗时
    if(that.run==true){ //正在运行从当前时间算起,否则从暂停点算起
      var nowTime=new Date();
      return nowTime.getTime()-that.startTime-that.pause.sum;
    }else{
      return that.pause.time-that.startTime-that.pause.sum;
    }
  };
  that.reset=function(){	//复位
    that.run=false;
    that.runTime=0;
    that.startTime=0;
    that.pause.sum=0;
    that.pause.num=0;
    that.pause.time=0;
    return that;
  };
  that.show=function(){			//若开始循环则监听返回true
    if(that.run==true){
      setTimeout(function(){
	if(that.run==true){
	  that.onShow(that.get());
	  that.show();
	}
      },that.showtime);
      return true;
    }else{
      that.onShow(that.get());		//
      return false;
    }
  }
return that;
};

可以new Stopwatch或Stopwacth()均可初始化对象。假设初始化对象为sw

对象初始化后需要计时时执行sw.start()开始计时

需要暂停时执行sw.stop()stop会停止计时,需要开始时再次执行sw.start()

如果需要返回当前总共计时时间,执行sw.get(),返回毫秒值。

如果打算在每隔一定时间执行一次特定工作,可以使用sw.show(),使用前需要设置sw.onShow回调函数,和sw.showtime间隔时间。注意的是show()方法仅仅在start后才可反复执行,当执行stop()方法时会自行退出

注意,sw.stop后sw.show之多sw.showtime毫秒后退出,showtime在show后改变不影响show行为,必须要停止后才能更新,回调函数同理。

可以多次show。

todo:回调函数类型检查。

注意问题的优化

关于xu xc

工作两年了,有点懒,完了在写吧
此条目发表在javascript分类目录。将固定链接加入收藏夹。