2013-03-20 50 views
1

我正在學習JS,因此無法找出答案。我想問問你們中的任何一個人是否可以發現我的錯誤,爲什麼我的循環結果以「未定義」而不是「十二月」出現12次。請幫忙!如何獲取月份名稱以顯示在Loop中返回

感謝

window.onload = function() { 
document.getElementById("months").innerHTML = getMonth(12); 
}; 

for(var month=0; month < 12; month++) 
{ 

document.getElementById("months").innerHTML = document.getElementById("months").innerHTML + "<br/>" + month + getMonth(month); 
} 

function getMonth(month) { 
    var monthName; 
    if (month == 12) { 
     monthName = "December"; 
    } 
    return monthName; 
} 

http://jsfiddle.net/priswiz/KufcA/

回答

4

因爲你的方法返回December只有當它的參數是等於12,但month變量只得到到12時循環被打破(遵守month < 12條件)。調整你的方法...

if (month == **11**) { 

...將給你12月在這個列表的末尾。說完這一切,我強烈建議使用已建立的庫(如Moment.js)來處理日期。它會爲你節省很多時間和精力。 )

作爲一個旁註,我會先建立整個'monthes-string',然後才用它作爲innerHTML。 DOM操作要謹慎使用。

+0

嗨,謝謝你,我正在12月現在結果,但我怎麼能重複12次? – meztli 2013-03-20 16:14:16

+0

所有月份?只要刪除檢查('if(month == 11)'line)然後。 – raina77ow 2013-03-20 16:16:39

+0

如果我想重複12月12日? – meztli 2013-03-20 16:25:37

1

月是月11號。它從0開始

1

month正從0增加到11(它在到達12之前停止)。由於傳遞給getMonthmonth的值永遠不是12,所以返回的monthName始終未定義。

您想要的是將月份數字映射到名稱的方法。例如:

function getMonth(month) { 
    var monthStr = ['January', 'February', ... ]; 
    return monthStr[month]; 
} 
0

我更新你的jsfiddle ...基本上是:

for(var month=1; month < 13; month++) 

以富人爲1個月到12

var monthName=""; 

避免 「不確定」