根据时间/时间表交换div可见性
在我的页面上我有两个div …一个div我希望从上午10点到下午6点(服务器时间)可见….而另一个div则是剩下的几小时。
我尝试了一堆搜索,找到某种javascript或jquery内容交换器,没有任何运气..感谢您的任何建议?
content content
我只能使用以下php来实现这一点:
= 02 && $hour < 05) { echo 'content block one '; } else { echo 'content block two'; }?>
然而,如果我想从晚上8点到凌晨4点显示div,这个解决方案似乎不起作用…这是因为它跨越了一天以上? 谢谢你的任何建议。
编辑
您在评论中提到的案例很棘手。 所以这是我修改后的修改答案:
Target date....: %s
Time to go.....: %d hours, %d minutes, %d seconds ", date("Ymd h:i:s A", $s), date("Ymd h:i:s A", $s0), $dh, $dm, $ds ); } ?>
如果需要根据服务器时间设置可见性,则应显示并隐藏服务器端的div。 因为没有JavaScript可以获得服务器时间而是客户端(可能位于远程位置)浏览器。
如果您的站点中有一个可以返回服务器时间的脚本,那么您可以实现这一点,但我认为从头开始有条件地标记HTML(php,jsp,无论如何)代码会更为明智。
只需使用带有Date()
$(document).ready()
处理程序(例如getHours()
方法),就像我使用以下代码一样: jsfiddle.net/c2TPZ 。 默认情况下,您可以隐藏这两个块,除非您的JS设置CSS样式以使其可见,例如。 像这样:
$('#box1').css({display: 'block'}); // sets display to 'block', eg. from 'none'
我通常会建议在服务器上完成此操作,但在Javascript中它看起来像这样:
var pHour = Date.getHours(); if ((pHour >= 10) && (pHour < 18)) { $('.scheduled-target').show(); }
这假定您默认情况下将'.scheduled-target'显示为:none。
这也是客户当地时间。 如果你想要一个绝对时间,你需要从Date.getUTCHours()开始,并为你的Timezone / Locale做偏移。
$(document).ready(function() { var d = new Date(); if (d.getHours() >= 10 && d.getHours() < 18) { $(#div1).show(); $(#div2).hide(); } else { $(#div1).hide(); $(#div2).show(); } });
编辑:哎呀,我错过了关于服务器时间的部分。 这不可靠。 相反,您应该使用服务器端脚本来设置它们。 不知道你在服务器端使用的是什么,但是例如在PHP中:
$hour = strftime("%H"); if ($hour >= 10 && $hour < 18) { $div1_class = "show"; $div2_class = "hide"; }
在你的css中,类.hide
是display: none;
理论上它就像这样简单:
HTML
10-6
other time of day
JavaScript的
current_hour = some_server_side_code_to_get_the_hour ?>;
if(current_hour >= 10 && current_hour < 18) $('.h10-6').show();
else $('.h-other').show();
CSS
.h { display: none; }