0

私はここにすっごく近いです。第一人者がこの最後の作品を手伝ってくれることを願っています。RSSフィードからのXMLをjQueryDatePickerカレンダーに入力しています。イベントがある強調表示された日付をクリックすると、クリックされた日のすべてのイベントを表示できるように、クエリ文字列を使用してURLを作成します。すべてが機能しています...前月または翌月をクリックして月を変更するまで。スクリプトは正しい日を返しますが、現在の月のみを返します。たとえば、5月に移動して5日をクリックすると、URLはevents.htm?month = june&day=5になります。選択した月が返されない理由について何かアイデアはありますか?これが私のコードです:

var data = $.ajax({
  url: "news.xml",
  type: "GET",
  dataType: "xml",
  async:false,
  success: function(xml){
     return xml;
  }
} ).responseText;

$(document).ready(function() {

    var events = getSelectedDates();

    $("div.datepicker").datepicker({
        beforeShowDay: function(date) {
            var result = [true, '', null];
            var matching = $.grep(events, function(event) {
                    return event.published.getDate() === date.getDate() && event.published.getMonth() === date.getMonth() && event.published.getFullYear() === date.getFullYear();
            });

            if (matching.length) {
                result = [true, 'highlight', null];
            }
            return result;
        },
        onSelect: function(dateText) {
            var date, selectedDate = new Date(dateText),
                i = 0,
                event = null;

            while (i < events.length && !event) {
                date = events[i].published;

                if (selectedDate.getFullYear() === date.getFullYear() && 
                    selectedDate.getMonth() === date.getMonth() && 
                    selectedDate.getDate() === date.getDate()) {

                    event = events[i];
                }
                i++;
            }
            if (event) {
                var eMonNum = event.published.getMonth();
                var d = new Date();
                var eMonNum = new Array();
                eMonNum[0] = "january";
                eMonNum[1] = "february";
                eMonNum[2] = "march";
                eMonNum[3] = "april";
                eMonNum[4] = "may";
                eMonNum[5] = "june";
                eMonNum[6] = "july";
                eMonNum[7] = "august";
                eMonNum[8] = "september";
                eMonNum[9] = "october";
                eMonNum[10] = "november";
                eMonNum[11] = "december";
                var eMon = eMonNum[d.getMonth()];
                var eDay = event.published.getDate();
                window.location = "events.htm?month="+eMon+"&day="+eDay;
            }
        }
    });
});

function getSelectedDates() {
    return $(data).find('entry').map(function() {
        return {
            title: $('title', this).text(),
            published: new Date($('published', this).text())
        };
    }).get();
}
4

1 に答える 1

1

問題が見つかりました。リソースからこのリストをコピーしたときに、変数を置き換えるのを忘れていました。

変更(月末リスト)

var eMon = eMonNum[d.getMonth()];

に:

var eMon = eMonNum[event.published.getMonth()];

私がしたのは、悪い変数を取り除き、月の変数をその日に使用した変数に再割り当てすることだけでした。d変数の宣言は必要ないので、削除することもできます。

頑張ってください!

于 2012-06-04T23:47:39.403 に答える