找不到为什么这个js/jQuery要列出最近12个月生成“未定义”警告

问题描述:

我无法摆脱在ul标签内和第一个li之前的html中显示的“未定义”消息。找不到为什么这个js/jQuery要列出最近12个月生成“未定义”警告

HTML:

<ul id="monthFilters" class="dropdown-menu pull-right" role="menu" aria-labelledby="dropdownMenu1"></ul> 

JS/jQuery的:

$(document).ready(function(){ 
    var theMonths = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"); 
    var theMonthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 
    var today = new Date(); 

    var aMonth = today.getMonth(); 
    var aYear = today.getFullYear(); 

    var i; 
    var monthList; 

    for (i=0; i<12; i++) { 

     monthList += '<li role="presentation"><a role="menuitem" tabindex="-1" href="?addedin=' + aYear + '-' + theMonths[aMonth] + '">'+theMonthNames[aMonth]+'</a></li>'; 

     aMonth--; 

     if (aMonth < 0) { 
      aMonth = 11; 
      aYear--; 
     } 
    } 

    monthList += '<li role="presentation"><a role="menuitem" tabindex="-1" href="?all">Show All</a></li>'; 

    $("#monthFilters").append(monthList); 

}); 

请参阅错误在此codepen。控制台中没有显示错误。我是否太累了,错过了简单/愚蠢的事情?

您没有将monthList定义为字符串,因此您尝试将字符串添加到未定义的字符串中。只需在循环之前执行此操作即可

var monthList = ""; 
+0

感谢您的快速响应!我甚至无法接受你的答案,持续7分钟。 :) – 2014-09-04 08:54:31

您需要初始化monthList变量。在您的代码中,它的值为undefined,因此当您构建第一个<li>元素时,将附加undefined字。

一个空字符串初始化它,就像

var monthList = ""; 
+0

感谢您的快速响应!有两个相似的答案,我只是投票给另一个,因为它在几秒钟内就会提前。 – 2014-09-04 08:53:19

+0

当然没问题! – 2014-09-04 08:54:13

你可以试试这个?

var monthList; 

var monthList="";