我正在尝试显示一个名为' oecard'当达到保存的开始时间,然后在达到保存的结束时间后隐藏它。
var db_st = item.DB_ST; // saved in db as '2017-10-02 12:20:00 PM'
var db_et = item.DB_ET; // saved in db as '2017-10-02 12:25:00 PM'
var cd_start = new Date(db_st).getTime(); // converts db date to milliseconds
var cd_end = new Date(db_et).getTime(); // converts db date to milliseconds
var currentdate = $.now();
var loop = setInterval(function(){
if(currentdate >= cd_start && currentdate <= cd_end)
{
$('#oecard').show();
}
else
{
$('#oecard').hide();
}
},1);
我尝试上面的代码无济于事。该按钮不会出现在保存的时间上,但是当我刷新页面时,它会出现。结束时间也是如此。
我知道这必须是某种逻辑错误。我需要动态地执行此操作,而无需刷新页面。
答案 0 :(得分:3)
您需要将currentdate
放入循环中:
var loop = setInterval(function(){
var currentdate = $.now();
if(currentdate >= cd_start && currentdate <= cd_end)
{
$('#oecard').show();
}
else
{
$('#oecard').hide();
}
},1);
$ .now()返回的值不是动态的,它不会为您更新,每次调用setInterval
回调时都需要调用它。
答案 1 :(得分:0)
请使用Date.parse
来比较日期。例如
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
//true
使用custom events
在没有刷新的情况下聆听时间。
答案 2 :(得分:0)
您可以使用.toggle()
重写几行代码,如:
setInterval(function(){
$('#oecard').toggle($.now() >= cd_start && $.now() <= cd_end);
}, 1);