在这种情况下,我试图在开始时分配开始时间,当我单击页面时,它应该返回我花费的时间,但我总是得到0。我不明白我可能去了哪里。需要您的帮助。
var timeSpent = (function(){
var time = new Date();
var timeRun = false,
startTime = time.getTime();
return function(){ // call this function by timeSpent()();
return time.getTime() - startTime;
}
})();
addEventListener("click", function(){
console.log(timeSpent());
})
答案 0 :(得分:1)
您需要在内部函数中计算当前时间
var timeSpent = (function(){
var time = new Date();
var timeRun = false,
startTime = time.getTime();
return function(){ // call this function by timeSpent()();
return (new Date()).getTime() - startTime;
}
})();
addEventListener("click", function(){
console.log(timeSpent());
})
答案 1 :(得分:0)
time
是一个日期。每次在其上调用getTime()
时,您将获得相同的值。
因此startTime
和time.getTime()
将始终相同。
您需要用会获得当前时间的内容替换time.getTime()
在返回的函数内部。 (new Date()).getTime()
var timeSpent = (function() {
var time = new Date();
var timeRun = false,
startTime = time.getTime();
return function() { // call this function by timeSpent()();
return (new Date()).getTime() - startTime;
}
})();
addEventListener("click", function() {
console.log(timeSpent());
})
答案 2 :(得分:0)
您的函数timeSpent()
的评估为(您可以通过在控制台中登录该函数来对其进行检查)
return time.getTime() - startTime;
最初为startTime = time.getTime()
。因此,以上return
语句的计算结果为0。为了获取当前时间,您必须
致电new Date().getTime()
var timeSpent = (function(){
var time = new Date();
var timeRun = false,
startTime = time.getTime();
return function(){ // call this function by timeSpent()();
return new Date().getTime() - startTime;
}
})();
addEventListener("click", function(){
console.log(timeSpent());
})