【发布时间】:2015-08-27 13:52:09
【问题描述】:
我试图在 javascript 中创建一个停止和启动计时器函数,以便在 jQuery 中使用来记录 $('input') 的 .focus() 和 .blur() 之间的时间。
这是我目前所拥有的:
function startTimer() {
_id = guid()
time = 0
timer_id = setInterval(function () {
time++;
}, 100);
timer = {
_id: _id,
time: time,
timer_id: timer_id,
}
return timer;
}
function stopTimer(timer) {
var stop = timer.time
clearInterval(timer.timer_id);
return stop;
}
// usage
fieldTimes = {}
// on focus of field
$("input").on('focus', function (e) {
element = e.target;
var timer = startTimer();
// on unfocus of field
$(element).blur(function () {
var time = stopTimer(timer);
var field = e.target.id
if (fieldTimes.hasOwnProperty(field)) {
fieldTimes[field] += time;
} else {
fieldTimes[field] = time;
}
})
});
小提琴:http://jsfiddle.net/andrewblaney/Ltfvmaec/
问题是 startTimer 创建的计时器对象没有更新时间
【问题讨论】:
-
@AndrewBlaney - 注意你的变量名/声明。您在
startTimer中使用全局time和timer,在focus和blur处理程序中使用本地timer和time。 -
@AndrewBlaney - 每次执行
focus处理程序时,您都会向输入添加一个新的blur处理程序。
标签: javascript jquery forms object timing