2010-12-08 39 views
0
var date = new Date(); 
do { 
    var sel = date.toString(); 
    document.write(sel + "<br>"); 
    date.setDate(date.getDate()+1); 
    } while(date.getDate() != 2 && date.getMonth() != 2) 

爲什麼在1月1日停止..?做...提前2個月停止?

回答

1

因爲在第二次迭代中.getDate是2. while不能執行。如果您希望在完成後停止,則需要將其增加到3. 2

如果您在代碼中更加明確地指出要添加到日期中的內容,它也不會受到影響。

+0

當得到月爲0爲什麼就不能執行,如果GETDATE是2 ? – Mantar 2010-12-08 13:04:28

+0

由於該條件評估爲錯誤,而該條件從此時開始退出。 getDate!= 2 - > false。 false && true == false。 – 2010-12-08 13:07:51

0

當你點擊3月或2日之後,你的循環將不再執行。這是因爲月份從0開始,因此1月份爲0,12月份爲11月份。

0

在javascript中,月份從1月份的索引0開始。您將需要根據您的需要相應調整您的循環。

0

我相信幾個月從0開始,所以在一月date.getMonth()== 0,1日起,!= 2

+1

所以它不應該停止在1月1日...條件是真的。 – 2010-12-08 12:55:30

+0

就這樣!我一定誤解了這個問題。謝謝。 – 2010-12-08 12:58:33

3

因爲在1月2日,第一個條件返回false和停止執行。我想,你希望腳本繼續一路2月2日,在這種情況下,你的情況應該是這樣的:

} while(date.getDate() != 2 || date.getMonth() != 1) 
// Stops when day is 2 and month is 1 (February) 

或者:

} while(!(date.getDate() == 2 && date.getMonth() != 1)) 

都意味着同樣的事情。需要注意的是月份是零索引,以便二月是1。這導致了這樣的輸出:

... 
Fri Jan 28 2011 14:57:00 GMT+0200 
Sat Jan 29 2011 14:57:00 GMT+0200 
Sun Jan 30 2011 14:57:00 GMT+0200 
Mon Jan 31 2011 14:57:00 GMT+0200 
Tue Feb 01 2011 14:57:00 GMT+0200 

http://jsfiddle.net/MF7bR/