2012-06-04 101 views
0

我很抱歉在這裏。我希望上師能夠幫助我完成最後一件作品。我正在用一個RSS提要填充XML的jQuery DatePicker日曆。在有事件的地方點擊突出顯示的日期時,我使用查詢字符串創建了一個URL,以便我可以顯示點擊日期的所有事件。一切正常......直到我通過點擊前一個或下一個月來更改月份。我的腳本將返回正確的一天,但只返回當前的月份。例如,我導航到May並單擊第5個,我的URL將是events.htm?month = june & day = 5。關於爲什麼它不會返回我選擇的月份的任何想法?這是我的代碼:jQuery DatePicker日曆不能返回正確的月份

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(); 
} 

回答

1

發現問題,當您從資源中複製此列表時,您忘記了替換變量。

CHANGE(在月初列表的末尾)

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

TO:

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

我所做的就是改掉壞變量並重新分配你一個月變量時使用的一那天。您也可以刪除d變量的聲明,因爲您不需要它。

祝你好運!

+0

我知道這是愚蠢的。問題是,我一直在看這個這麼久,我看不到它。謝謝。希望別人能從這段代碼中獲得一些用處。 – Psykopup

+0

我們都去過那裏! :)祝你的項目好運! – Jonathan