我正在尝试为数组中的元素指定返回值,并且由于某种原因,它会将数组中的两个元素重写为相同的值而不是第二个元素。
我可以在此处找到我正在使用的日期选择器,供参考。
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(中央标准时间),Sun Jan 08 2017 23:59:59 GMT-0600(中央标准时间)]
输出2:[Mon Jan 09 2017 00:00:00 GMT-0600(中部标准时间),2017年1月9日星期一00:00:00 GMT-0600(中央标准时间)]
正如您所看到的,当我尝试将第二个元素t[1]
指定为等于AddDays(t[0], $(this).val())
的返回值时,两个日期都会设置相同的确切日期。但是,第二个元素应该等于第一个元素加上指定的天数。
我还验证了元素$(this).val()
不为零。在我的情况下,当我在分配console.log($(this).val());
之前运行t[1]
时实际上返回7。
我在这里做错了什么?
答案 0 :(得分:1)
您的功能会修改致电setTime
时传递的日期。您可以移除对setTime
的来电以解决您的问题。
function addDays(date, days) {
return new Date(date.getTime() + (days * 86400000));
}
或制作一个全新的约会对象,并在副本上调用setDate
或setTime
。
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}