最新项目上用到一个JS计时器,缺点是没有做setTimeOut的管理,只能启动一个计时器。
JS计时器,工具类,用法:
<span style="font-size:14px;">var timer = TimeUtils.getTimer().start("#Id“);//启动
timer.stop();//停止
timer.getStartTime();//获取开始时间
timer.getStopTime();//获取停止</span>
源码:
<span style="font-size:14px;">var TimeUtils = {
/**
* 获取一个计时器
*/
getTimer: function() {
return new timerCount();
}
};
window.TimeUtil = TimeUtils;
/**
* 启动计时器
*/
function timerCount() {
this.sTime = null;
this.eTime = null;
this.tTime = 0;
};
timerCount.prototype = {
start: function(eleId) {
this.sTime = new Date();
tTime = 0;
$Timer = $(eleId);
TimerLoop();
return this;
},
stop: function() {
this.eTime = new Date();
this.tTime = tTime; //记录本次总共花费的秒数
clearTimeout(funId);
return this;
},
getStartTime: function() {
return new DateFormat().format(this.sTime);
},
getStopTime: function() {
return new DateFormat().format(this.eTime);
},
getDuration: function() {
//return getDateDiff(this.eTime, this.sTime);
return this.tTime;
}
};
var tTime = 0;
$Timer = $("callTime");
var funId = null;
/**
* 计时器,每秒执行一次
*/
function TimerLoop() {
var hour = parseInt(tTime / 3600); // 小时数
var min = parseInt(tTime / 60); // 分钟数
if (min >= 60) {
min = min % 60;
}
var lastsecs = tTime % 60;
tTime++;
var str = hour + "时" + min + "分" + lastsecs + "秒";
$Timer.text(str);
funId = setTimeout("TimerLoop()", 1000);
};</span>