2010-08-11 50 views
1

所以,我試圖讓我的腳本找出相關的學期最後一天。它需要運行直到當前日期小於(如以前)季度的最後一天。無論如何,它都會繼續運行。 PS,我認爲問題可能是它不重置「lastDayofQuarter」(至少在循環之外)。我怎樣才能繞過這個?萬分感謝!JavaScript循環運行不確定

var today = new Date(); 

var lastDayofQuarter=new Date(); 

var lastDaysofQuarter=new Array(); 

lastDaysofQuarter[0]=(2009,11,3); 
lastDaysofQuarter[1]=(2010,11,10); 
lastDaysofQuarter[2]=(2011,4,18); 
lastDaysofQuarter[3]=(2011,5,10); 

lastDayofQuarter.setFullYear(lastDaysofQuarter[0]); 

i=0; 

while (lastDayofQuarter<today) { 
lastDayofQuarter.setFullYear(lastDaysofQuarter[i]); 
i++; 
} 
+0

而(lastDayofQuarter <今天) { lastDayofQuarter.setFullYear(lastDaysofQuarter [1]); i ++; } – user417669 2010-08-11 20:42:17

+0

你想做什麼? – 2010-08-11 20:46:14

回答

2

這些線是語法有效,但他們沒有工作,你打算在他們工作:

lastDaysofQuarter[0]=(2009, 11, 3); 
// ... 

comma operator評估它的兩個操作數(從左至右),並返回第二個操作數的值。因此(2009, 11, 3)只是返回3

看起來你,你想做的事:

lastDaysofQuarter[0] = new Date(2009, 11, 3); 
// ... 
+0

很棒,這正是我所需要的,非常感謝,也感謝關於循環中逗號的珍聞 – user417669 2010-08-13 07:38:27

+0

@ 106058983:很高興幫助。如果有幫助,您可以通過點擊左側的綠色勾號將答案標記爲已接受。 – 2010-08-13 19:20:56

1

setFullYear不接受一個日期作爲參數 - 它接受一個 - 三個整數代表年,月和月中的一天。

你的腳本將你用什麼簡單地從你的陣列分配值lastDayofQuarter,而不是使用setFullYear

lastDaysofQuarter[0]=new Date(2009,11,3); 
lastDaysofQuarter[1]=new Date(2010,11,10); 
lastDaysofQuarter[2]=new Date(2011,4,18); 
lastDaysofQuarter[3]=new Date(2011,5,10); 

lastDayofQuarter = lastDaysofQuarter[0]; 

i=1; 

while (lastDayofQuarter<today) { 
lastDayofQuarter = lastDaysofQuarter[i]; 
i++; 
} 
+0

似乎在我發佈後更改了問題中的示例代碼,不再建議您嘗試將日期傳遞給setFullYear - 不管如何,上述示例無論如何都適合您。 – Dexter 2010-08-11 20:56:23