2013-07-07 53 views
1

有人可以看看这个用新鲜的眼睛。日期循环增量和增长变量(mootools)

var start_date = Date.parse('2013-07-01'); 
var i_date = Date.parse('2013-07-5'); 

console.log(start_date + '---before loop '); 

for (var n = start_date; n < i_date; n.increment()) { 
    console.log(start_date + '---inside loop '); 
} 
console.log(start_date + '---after loop '); 

这段代码产生这样的:

Mon Jul 01 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---before loop 
Mon Jul 01 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---inside loop 
Tue Jul 02 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---inside loop 
Wed Jul 03 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---inside loop 
Thu Jul 04 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---inside loop 
Fri Jul 05 2013 00:00:00 GMT+0200 (W. Europe Daylight Time)---after loop 

为什么没有起始日期变量增长?

(如果需要提琴here

回答

1

的问题是,nstart_date都指向同一个对象。你需要通过创造新的Date对象克隆的日期,例如:

n = new Date(start_date); 

Updated demo

例子:

> a = new Date() 
Sun Jul 07 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
> b = a 
Sun Jul 07 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
> c = new Date(a) 
Sun Jul 07 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
// Do some stuff with "a" 
> a 
Sat Jun 29 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
> b 
Sat Jun 29 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
> c 
Sun Jul 07 2013 19:51:09 GMT+0600 (Ekaterinburg Standard Time) 
+0

为什么downvoted?我认为这是公平的解释... – Rikard

+0

@Rikard我得到了像在完全不同的问题连续3 downvotes,所以它可能与答案质量 – mishik

+0

@ mishik无关,感谢您的答案!在你建议'start_date = new Date(n);'的帖子上,'但是在你的小提琴中你有倒置的'var n = new Date(start_date);'。小提琴把我放在正确的轨道上,你的解释让我感到困惑:)。这是一个错字错误吗? – Sergio