【发布时间】:2015-05-10 09:17:21
【问题描述】:
我是新手,请原谅我的无知。我试图通过本地存储获取一个计时器来告诉用户他们上次访问该页面的时间。但我却做了一个无限循环,我该如何纠正这个问题?在函数外调用函数?这会是什么样子?
$(document).ready(function(){
var myDate = new Date(2015,4,9,0,0);
localStorage["mydate"] = JSON.stringify(myDate);
startTimer();
});
function startTimer() {
setInterval(function(){
var text = "It's been " + hoursSinceFirstVisit() + " hours since you first visited.";
$('#timer').text(text);
}, 1000);
}
function hoursSinceFirstVisit() {
var currentDate = new Date();
var lastDate = new Date(JSON.parse(localStorage["mydate"]));
return hoursBetweenDates( lastDate, currentDate);
}
<div id="timer"></div>
谢谢!
【问题讨论】:
-
您到底想达到什么目标?您的代码只会每秒钟更新一次自您第一次访问以来的小时数。这不是你想要的吗?你到底哪里有问题?
-
好的,我在 Chrome 和 Firefox 中运行了你的脚本,它似乎工作正常。我从来没有遇到过“太多递归”的错误。您可以尝试的是省略 JSON 部分。只需使用
myDate.toISOString()将您的日期对象转换为字符串表示,然后使用new Date(localStorage["mydate"])取回日期对象。 -
太好了,如果我想对 JSON 进行故障排除......我应该从哪里开始?
-
什么意思?你是说它可以在没有 JSON 的情况下工作,而现在你想让它与 JSON 一起工作?
标签: javascript jquery infinite-loop