2016-12-30 47 views
0

我想分配一個返回值給一個數組中的元素,出於某種原因,它將數組中的兩個元素覆蓋爲相同的值而不是第二個元素。JavaScript - 分配數組索引返回值不工作

我正在使用的datepicker可以在這裏找到,僅供參考。

http://www.eyecon.ro/datepicker/

function AddDays(date, days) 
{ 
    var newDate = new Date(date.setTime(date.getTime() + days * 86400000)); 
    return newDate; 
} 

$('#nights').on('change', function(){ 
    var $dp = $('#date'); 
    var t = $dp.DatePickerGetDate(); 
    console.log(t); // Output 1 
    t[1] = AddDays(t[0], $(this).val()); 
    console.log(t); // Output 2 
}); 

輸出1:星期一2017年1月2日00:00:00 GMT-0600(中部標準時間),太陽2017年1月8日23:59:59 GMT-0600(中部標準時間)]

輸出2:星期一2017年1月9日00:00:00 GMT-0600(中部標準時間),星期一2017年1月9日00:00:00 GMT-0600(中部標準時間)

正如您所看到的,當我嘗試將第二個元素t[1]指定爲等於的返回值時兩個日期都設置相同的確切日期。但是,第二個元素應該等於第一個元素加上指定的天數。

我還驗證了元素$(this).val()不爲零。在我的情況下,實際上返回7,當我在t[1]的任務之前運行console.log($(this).val());

我在這裏做錯了什麼?

+0

你能否創建一個工作示例? – Dekel

+0

在將它傳遞給'Date'構造函數之前,你正在改變原始日期,所以它們自然會在同一時間結束。刪除'd.setTime()'。 – 2016-12-30 20:26:45

回答

1

當您撥打setTime時,您的功能會修改傳入的日期。您可以刪除對setTime的呼叫以解決您的問題。

function addDays(date, days) { 
    return new Date(date.getTime() + (days * 86400000)); 
} 

或做一個全新的約會對象,並呼籲副本setDatesetTime

function addDays(date, days) { 
    var result = new Date(date); 
    result.setDate(result.getDate() + days); 
    return result; 
} 
+0

這實際上是爲我工作的答案。謝謝。像魅力一樣工作。 – Entevily