0

对于 JS ninjas 这可能是基本的 JS 编程,但我不确定如何攻击它,因为我是 Javascript/jQuery 菜鸟。

我想根据今天的日期显示一个 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>

谢谢!

4

3 回答 3

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) {
  ...
}

您可以span使用 jQuery 从您的文本中提取文本,并在需要时使用此功能显示/隐藏文本div

于 2013-03-03T05:22:41.943 回答
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>
于 2013-03-03T05:22:51.850 回答
0

假设您使用的是 jQuery,这里有一个 jsFiddle:http: //jsfiddle.net/Pb3bm/

不过,在您的工作日期课程中,我建议您将日期以毫秒为单位存储为参数,如下所示:

<span class="job-date" datems="1358139600000">1-14-2013</span> 

这样您就不必担心日期的显示格式。

于 2013-03-03T05:27:46.663 回答