对于JS忍者来说,这可能是基本的JS编程,但我不确定如何攻击它,因为我是一个Javascript / jQuery noob。
我想根据今天的日期显示div。
逻辑是这样的:
检查今天的日期,如果今天的日期是span.job-date的30天或更长时间,则显示div.message。另外,我想在div中插入消息的天数。 (在此示例中将显示消息)。
<span class="job-date">1-14-2013</span>
<div class="message">This job is XX days old it may no longer be available</div>
谢谢!
答案 0 :(得分:1)
这应该有所帮助。您可以使用此功能确定过去日期和今天之间的天数差异:
function getDaysOld(date) {
// Get difference in days from ms and floor result
return 0|(new Date() - date) * 1.16e-8;
}
您可以像这样使用它:
if (getDaysOld(new Date('1-14-2013')) >= 30) {
...
}
您可以使用jQuery从span
中提取文本,并在需要时使用此功能显示/隐藏div
。
答案 1 :(得分:1)
JS:
$(function() {
var jobDateText = $(".job-date").html()
, jobDate = new Date(jobDateText)
, today = new Date()
, thirtyDaysInMS = 30 * 24 * 60 * 60 * 1000
, differenceInMS = Math.abs(today - jobDate)
, differenceInDays = Math.floor(differenceInMS / 1000 / 60 / 60 / 24);
if (differenceInMS > thirtyDaysInMS) $(".message").show();
$("span.daysOld").html(differenceInDays);
});
HTML:
<span class="job-date">1-20-2013</span>
<div class="message">This job is <span class="daysOld"></span> days old, and it may no longer be available</div>
CSS:
.message {
display:none;
}
对于像这样的东西,AngularJS是jQuery的一个非常好的替代品。你在AngularJS中所要做的就是在控制器范围内设置一个变量,例如基于日期数学的$scope.stale = true
和$scope.daysOld
,然后在你的html中
<div class="message" ng-show="stale">This job is {{daysOld}} days old it may no longer be available</div>
答案 2 :(得分:0)
假设你正在使用jQuery,这里有一个jsFiddle给你:http://jsfiddle.net/Pb3bm/
尽管如此,在你的工作日期课程中,我建议你将日期作为参数存储在毫秒中,如下所示:
<span class="job-date" datems="1358139600000">1-14-2013</span>
这样您就不必担心日期显示的格式了。