2013-07-26 65 views
0

對我的日期有一個小問題。我有一個函數接收日期並存儲到一些變量中。我將傳入日期設置爲兩個變量的不同日期,但運行時,它是相同的。以下是一個片段函數中的2個變量獲得相同的日期值

function dateChange(dateInput){ 
var prevWeek = dateInput; 
var prevMonth = dateInput; 
prevWeek.setDate(prevWeek.getDate()-7); 
prevMonth.setDate(prevMonth.getDate()-30); 

var $prev_month_link = $('<a>') 
     .html("month") 
     .click(function(event){ 
      //prevMonth = new Date(); 
      alert("click prevMonth: "+prevMonth); 
     //dateChange(prevMonth) 
     prevMonth = prevMonth.substring(3,5)+"/"+prevMonth.substring(0,2)+"/"+prevMonth.substring(6,10) 
     var prevMonth2 = new Date(prevMonth); 
     //alert("line 132, current2 is: "+prevMonth2); 
     dateChange(prevMonth2); 
     event.stopPropagation(); 
     }) 
     .addClass("prevMonth") 
     .attr('data-name', prevMonth) 
     .appendTo($prev_container) 

     var $prev_week_link = $('<a>') 
     .html("week") 
     .click(function(event){ 
      alert("click prevWeek: "+prevWeek); 
     prevWeek = prevWeek.substring(3,5)+"/"+prevWeek.substring(0,2)+"/"+prevWeek.substring(6,10) 
     var prevWeek2 = new Date(prevWeek); 
     dateChange(prevWeek2) 
     event.stopPropagation(); 
     }) 
     .addClass("prevWeek") 
     .attr('data-name', prevWeek) 
     .appendTo($prev_container) 
} 

我的問題是prevWeek和prevMonth具有相同的日期,即使我把他們不同。我不確定是否因爲點擊事件發生。 例如,你可以在這裏看到http://www.ccy.com.au/availability/

預先感謝您

回答

3

你可能會認爲這兩行復制到dateInputprevWeekprevMonth

var prevWeek = dateInput; 
var prevMonth = dateInput; 

並非如此。他們讓prevWeekprevMonth指向相同的地方。當你然後調用它們的方法:

prevWeek.setDate(prevWeek.getDate()-7); 
prevMonth.setDate(prevMonth.getDate()-30); 

你只是改變它們指向的對象;它相當於

dateInput.setDate(dateInput.getDate()-7); 
dateInput.setDate(dateInput.getDate()-30); 

可能不是你想要的。要真正複製日期,使用new Date,通過它你要複製的日期:

var prevWeek = new Date(dateInput); 
var prevMonth = new Date(dateInput); 

這使得他們每一個點到一個新的,不相同的Date代表時間的同一時刻。

+0

我覺得最大的旋鈕。我有: var prevWeek = new Date(dateInput); var prevMonth = new Date(dateInput); 在DreamWeaver中註釋掉和隱藏了..我一直在研究這個太久了,謝謝謝謝謝謝先生! –

相關問題