我有代码每10秒重新获取日历中的事件。但在此之前,它需要正确呈现(如果过去时间或未来时间不同的颜色),所以我使用变量now
和time
来获取时间。但是现在我得到的time
首先设置为始终相同,我需要获得使用setInterval函数设置的time
。
我可以以某种方式使用第一个变量time
只有一次还是有其他解决方案?
var now = new Date();
var time = now.getTime();
setInterval(function(){
var now = new Date();
var time = now.getTime();
$('#calendar').fullCalendar('refetchEvents');
}, 10 * 1000);
if (eventTime < time) {
//do something
}else {
// do something else
}
答案 0 :(得分:3)
从var
&amp;移除now
函数在setInterval中time
,它在那里重新创建那些变量。
更改time
。
尝试吼叫
var now = new Date();
var time = now.getTime();
setInterval(function(){
now = new Date();
time = now.getTime();
$('#calendar').fullCalendar('refetchEvents');
if (eventTime < time) {
//do something
}else {
// do something else
}
}, 10 * 1000);
答案 1 :(得分:2)
由于您在函数内使用var
关键字,因此会在函数范围内再次创建time
和now
。这意味着它们与函数外部的变量不同,尽管它们具有相同的名称。如果删除该关键字,则将更新全局范围中变量的值,您可以从外部访问函数设置的值。
另外,我会将if语句放在intervalled函数中。在将该时间变量设置为新值之前,JavaScript将执行if语句。