我有点新手所以请耐心等待。每次有人打开新页面时,我都在javascript中创建了一个日期对象。我想节省用户打开页面的时间,并在一天后创建另一个日期对象,以创建倒数计时器,显示从日期1到日期2的时间。
为实现这一目标,我尝试使用.getTime
减去两个日期;我想保持第二个日期是静态的,而不是比当前时间提前一天。遗憾的是,即使我将d2
(日期2)限制为仅运行一次并存储在变量nextday
中的条件,也不会发生这种情况。这是我的JS
$(function (){
localStorage.clear()
var ran = JSON.parse(localStorage.getItem('run'))
d1 = new Date()
var i = 0
if(!ran){
i+=1
d2 = new Date(d1)
nextday = d2.setHours(d1.getHours()+24)
console.log(i)
console.log(typeof(nextday))
localStorage.setItem('run',JSON.stringify('ran'))
localStorage.setItem('nextday',JSON.stringify(nextday))
}
console.log(localStorage)
nday = JSON.parse(localStorage.getItem('nextday'))
console.log(nday)
var seconds = (nday - d1.getTime())
console.log(seconds)
console.log(localStorage)
})
答案 0 :(得分:1)
每次加载页面时,您的脚本都在清除本地存储:
localStorage.clear()
这样可以防止在运行中存储任何内容。删除它。
答案 1 :(得分:1)
在访问本地存储的数据之前,您需要清除localStorage
。因此,您的ran
变量始终为空。删除对clear()
的一次调用,一切都应该正常。
$(function() {
// localStorage.clear() <= the offending code!
var ran = JSON.parse(localStorage.getItem('run'))
d1 = new Date()
var i = 0
if (!ran) {
i += 1
d2 = new Date(d1)
nextday = d2.setHours(d1.getHours() + 24)
console.log(i)
console.log(typeof(nextday))
localStorage.setItem('run', JSON.stringify('ran'))
localStorage.setItem('nextday', JSON.stringify(nextday))
}
console.log(localStorage)
nday = JSON.parse(localStorage.getItem('nextday'))
console.log(nday)
var seconds = (nday - d1.getTime())
console.log(seconds)
console.log(localStorage)
})