1

期日までのカウントダウン番号を追加するために、.days-due の各クラスをステップ実行しています。例: 期限は 2 日後 - 期限:2013 年 2 月 8 日

また、期日を過ぎた負の日数を表示したいと考えています。

http://jsfiddle.net/infatti/XeqPT/#base

期限の日数が間違っているのですが、その理由がわかりません。

<ul>
<li>Due in <span class="days-due"></span> days - Due Date is <span class="month">02</span>/<span class="day">08</span>/<span class="year">2013</span></li>
<li>Due in <span class="days-due"></span> days - Due Date is <span class="month">02</span>/<span class="day">10</span>/<span class="year">2013</span></li>
</ul>

function daysUntil(year, month, day) {
  var now = new Date(),
      dateEnd = new Date(year, month - 1, day), // months are zero-based
      days = (dateEnd - now) / 1000/60/60/24;   // convert milliseconds to days

  return Math.round(days);
}

var monthDue = $(this).next('.month').text();
var dayDue = $(this).next('.day').text();
var yearDue = $(this).next('.year').text();

$('.days-due').each(function(){
    $(this).text(daysUntil(yearDue, monthDue, dayDue));
});
4

1 に答える 1

1

$(this)あなたの文脈では、を参照してくださいwindow

next兄弟を見る。あなたのスパンはウィンドウの兄弟ではありません。

セレクターを変更します。また、コードは 1 セットの要素しか見ていませんが、マークアップには 2 つの要素があります。

これを試して

function daysUntil(year, month, day) {
    var now = new Date(),
        dateEnd = new Date(year, month - 1, day); // months are zero-based
    days = (dateEnd - now) / 1000 / 60 / 60 / 24; // convert milliseconds to days
    return Math.round(days);
}

$("li").each(function () {

    var monthDue = $(this).find('.month').text();
    var dayDue = $(this).find('.day').text();
    var yearDue = $(this).find('.year').text();

    $(this).find(".days-due").text(daysUntil(yearDue, monthDue, dayDue));

});

すべてのli要素を見つけて、それらをループして計算を行います。変更liのコンテキストを選択しているためです。this

于 2013-02-06T20:09:34.093 に答える