Tho*_*mmy 3 javascript for-loop date
我有两个日期,并希望在数组之间保存日期(加上开始日期和结束日期)
var date1 = new Date("Sep 23, 2013 12:00:00"); // Monday
var date2 = new Date("Sep 26, 2013 12:00:00"); // Thursday
var alldates = [];
for (var i=0; date1 <= date2; date1.setDate(date1.getDate() + 1), i++) {
alldates.push(date1);
}
alert(alldates.join('\n'));
Run Code Online (Sandbox Code Playgroud)
使用此代码alert(alldates.join('\n'));显示以下内容
Fri Sep 27 2013 12:00:00 GMT+0200
Fri Sep 27 2013 12:00:00 GMT+0200
Fri Sep 27 2013 12:00:00 GMT+0200
Fri Sep 27 2013 12:00:00 GMT+0200
Run Code Online (Sandbox Code Playgroud)
我是Javascript的新手,希望得到进一步的理解,所以感谢您解释为什么alert没有显示
Mon Sep 23 2013 12:00:00 GMT+0200
Tue Sep 24 2013 12:00:00 GMT+0200
Wed Sep 25 2013 12:00:00 GMT+0200
Thu Sep 26 2013 12:00:00 GMT+0200
Run Code Online (Sandbox Code Playgroud)
jau*_*tte 11
您遇到的问题是您推送date1对象的引用.在循环中更改日期时,更新对象,但所有引用仍指向同一对象.
您需要推送日期的文本表示或date1对象的副本
for (var i=0; date1 <= date2; date1.setDate(date1.getDate() + 1), i++) {
alldates.push(new Date(date1));
}
alert(alldates.join('\n'));
Run Code Online (Sandbox Code Playgroud)
如建议的那样,使用while循环
while( date1 <= date2 ) {
alldates.push(new Date(date1));
date1.setDate( date1.getDate() +1 );
}
Run Code Online (Sandbox Code Playgroud)