0

JS 忍者にとって、これは基本的な 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) {
  ...
}

jQuery を使用してテキストを抽出し、spanこの関数を使用して、必要に応じて を表示/非表示にすることができ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 に答える