【发布时间】:2016-12-30 20:16:55
【问题描述】:
我正在尝试为数组中的元素分配返回值,但由于某种原因,它会将数组中的两个元素都覆盖为相同的值,而不仅仅是第二个元素。
我使用的日期选择器可以在这里找到,以供参考。
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] 分配为等于 AddDays(t[0], $(this).val()) 的返回值时,两个日期都设置为相同的确切日期。但是,第二个元素应该等于第一个元素加上指定的天数。
我还验证了元素 $(this).val() 不为零。在我的情况下,当我在分配 t[1] 之前运行 console.log($(this).val()); 时,实际上返回 7。
我在这里做错了什么?
【问题讨论】:
-
你能创建一个工作示例吗?
-
您在将原始日期传递给
Date构造函数之前对其进行了变异,因此它们自然会以相同的时间结束。删除d.setTime()。
标签: javascript jquery arrays date