2013-03-20 84 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=""; 

避免 “不确定”

相关问题