【发布时间】:2014-05-22 20:41:13
【问题描述】:
我正在尝试创建一个时间表。根据当前时间divbackground-color会发生变化。
日程安排
1) 当当前时间超过预约时间时,将.dngr class 添加到div
2) 当面试还剩 1 小时时,将 .ready class 添加到 div
我正在使用PHP 动态创建页面。 Bootstrap 3 用于 UI 和 moment.js 用于时钟
PHP 代码
<div class="col-md-3">
<div class="thumbnail">
<i class="glyphicon glyphicon-user"></i> <?php echo $name;?> <a href="#" data-toggle="modal" data-target="#<?php echo $u_id;?>" class="pull-right btn btn-primary view" data-placement="top" title="Click to view Resume"><i class="glyphicon glyphicon-eye-open"></i></a>
<hr class="no-margin-top-bottom">
<i class="glyphicon glyphicon-phone"></i> <?php echo $phone; ?>
<br/><span class="interviewtime" data-time="<?php echo date('YmdHis', strtotime($schedule));?>"><i class="glyphicon glyphicon-time"></i> <?php echo date('F jS Y, h:i a', strtotime($schedule)); ?> </span>
</div>
</div>
上面的代码只会显示name、phonenumber和appointment time。
注意!! 上面的代码将被放置在一个循环中。在给定的时间会有多个appointments 我保留LIMIT 20
JQuery 代码
var repeater;
function showcurrenttime()
{
$('.crnttym').text(moment().format('MMMM Do YYYY, h:mm:ss a'));
repeater = setTimeout(showcurrenttime, 500);
if ($('.interviewtime').data('time') < moment().format('YYYYMMDDHHmmss'))
{
$(this).parent().addClass('dngr');
}
}
showcurrenttime();
上面的代码会给出当前时间。 if() 条件是尝试将 .dngr class 添加到已安排的约会中失败,其中当前时间超过了约会时间。
CSS
.dngr{background-color: #D9534F;border-color: #D43F3A;color: white}
.ready{background-color: #128666;color: white}
我的问题是我无法让 div 更改背景颜色,也是日程安排工作的第二点。所有这些都应该使用 javascript 完成
【问题讨论】:
-
ready和dngr类会同时应用于同一个元素吗?如果是这样,您需要将.dngr样式稍后放在 CSS 文件中.ready之后 -
比较
$('.interviewtime').data('time') < moment().format('YYYYMMDDHHmmss')似乎是问题的根源。您在这里具体比较的是什么值? -
不不,只有傻瓜才会这样做哈哈哈。将在不同的时间应用于 div。正如我在日程安排中提到的那样@Blazemonger
-
@Blazemonger 是的,这就是我从两者得到的值是 20140409191900 的问题,这是没有连字符和冒号的日期和时间
-
查看将两个日期字符串存储在ISO 8601 format 中,然后将它们转换为
Date对象以进行真正的比较。
标签: php jquery css twitter-bootstrap momentjs