【问题标题】:How to show Open/Closed based on time records with an html class如何使用 html 类根据时间记录显示打开/关闭
【发布时间】:2016-08-20 13:35:38
【问题描述】:

我正在尝试使用 Javascript 根据公司在该特定日期的时间显示 Open 或 Closed。我在 WordPress 上使用主题 Listify,客户可以列出他们的业务。他们可以选择在一周中的每一天输入他们的工作时间。我希望能够使用存储在跨度内的数据,然后确定业务是开放还是关闭并显示出来。

这是我目前的代码:

<p class="business-hour" itemprop="openingHours" content="Monday 8am-17pm">
    <span class="day">Monday</span>
    <span class="business-hour-time">
         <span class="start">8:30 am</span> – <span class="end">5:30 pm</span>
   </span>
</p>

这只是一天,但你应该明白这一点。我一直在寻找几个小时来找到这样的东西。我所能找到的只是使用 Javascript 中已经定义的特定时间进行编码。我希望能够使用类 start 和 end 来创建开放或封闭。这可能吗?我会认为是。我似乎无法正确地做到这一点。

我一直在这里练习,但似乎无法弄清楚:http://codepen.io/tetonhiker/pen/KzxRzg

谢谢!

【问题讨论】:

  • 您愿意使用像date.js 这样的库吗?这将使任务变得更容易(参见this question
  • 是的,我会的.. 我将如何使用它呢?
  • 或者有没有办法在 PHP 中做到这一点?
  • 当然,我将创建一个关于如何使用 date.js 执行此操作的答案。我实际上将为即将到来的客户做类似的事情,但可能会采用 PHP 方法。如果您对 Wordpress/PHP 感到满意,我建议您试一试,然后在遇到困难时返回此处并发布另一个问题。
  • 我会很乐意用 PHP 来做这件事。我只是坚持让它开始。不幸的是,我可以比创建自己的代码更好地阅读/修改代码。虽然我还在学习!这是我询问 PHP stackoverflow.com/questions/36870721/… 的问题的链接

标签: javascript wordpress html datetime


【解决方案1】:

我稍微修改了你的代码,使用了date.js:

http://codepen.io/anon/pen/VaGdBK

var da = new Date();
document.getElementById("display").innerHTML = da.toDateString();




//gets the current time. 
//var d = new Date();
var x = document.getElementsByClassName("start")[0].innerText;
var z = document.getElementsByClassName("end")[0].innerText;
//var o = parseInt(x,10);
//var c = parseInt(z,10);

var startTime = Date.parseExact(x, "h:mm tt");
var endTime = Date.parseExact(z, "h:mm tt");

if (da.between(startTime, endTime)){
    $(".open").show();
    $(".closed").hide();
}
else {  
    $(".closed").show();
    $(".open").hide();
}
.open, .closed {
  display: none;
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
<span class="day">Monday </span>
<span class="start">8:30 am</span> - 
<span class="end">5:30 pm</span>
<br>
<span id="display"></span>
<div class="open">Shop is open</div>
<div class="closed">Shop is closed</div>

我没有充分研究它,所以我不知道它在时区方面是如何工作的。您可能需要调整我发布的内容以解决此问题。

另外:添加了一条 CSS 规则,以避免在它们被 jQuery 隐藏之前显示打开和关闭的短暂闪烁。

【讨论】:

  • 谢谢!我正在让它在我的主题上工作.. 除了它在所有的日子里都出现了几个小时。有什么方法可以将其设置为仅在一周中的当天显示?
  • 在 PHP 端可能会做得更好,但您可以执行以下操作:为每个显示日期的跨度添加一个 data-day 属性,并为每个跨度赋予一个从 0 到 6 的值(0 表示星期日。)然后您可以使用原生 getDay() 并比较该值是否等于 data-day 属性值以显示打开或关闭的 div,如下所示:if (da.getDay() === $('.day').data('day')) { // do your showing/hiding here }
  • 抱歉回复晚了,谢谢你的帮助。我怎样才能给每一天一个 0 - 6 的值?
  • 硬编码如下:&lt;span class="day" data-day="1"&gt;Monday&lt;/span&gt;
  • 哦,我知道那不行。试试这个:codepen.io/anon/pen/jqJxwe 用硬编码的data-day 属性将每一组日期和开始和结束时间包装在一个 div 中(如果你愿意,也可以是一个名为 day1、day2 等的类。)然后我们可以得到通过查询适当的日期来正确显示和隐藏的开始和结束时间。希望这是有道理的。
猜你喜欢
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多