[英]jQuery show and/or hide element based on set date
我试图在到达保存的开始时间时显示一个名为“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);
我尝试了上面的代码无济于事。 该按钮不会出现在保存的时间,但是当我刷新页面时,它会出现。 结束时间也会发生同样的事情。
我知道这一定是某种逻辑错误。 我需要动态执行此操作而无需刷新页面。
您需要将currentdate
放入循环中:
var loop = setInterval(function(){
var currentdate = $.now();
if(currentdate >= cd_start && currentdate <= cd_end)
{
$('#oecard').show();
}
else
{
$('#oecard').hide();
}
},1);
$.now() 返回的值不是动态的,它不会为您更新,每次调用setInterval
回调时都需要调用它。
请使用Date.parse
比较日期。 例如
Date.parse('01/01/2011 10:20:45') > Date.parse('01/01/2011 5:10:10')
//true
使用custom events
监听做事不刷新的时间。
您可以使用.toggle()
在几行中重写代码,例如:
setInterval(function(){
$('#oecard').toggle($.now() >= cd_start && $.now() <= cd_end);
}, 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.