我有一个月份名称的数组,并且想要使用select元素追加,但是使用for循环传递它时显示未定义的值。 代码在下面
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
for(var i = 0 ; i < month.length ;i++ ){
$(document).ready(function(){
$('#date').append("<option >"+ month[i] +"</option>");
}
});
答案 0 :(得分:3)
它在DOM准备好之前进行迭代。您希望for循环在$(document).ready
函数调用中 。
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
var monthday = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
var years = [ 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017 ];
//append month to the date
$(document).ready(function(){
for (var i = 0; i < month.length; i++) {
console.log(i);
$('#date').append("<option >"+ month[i] +"</option>");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="date"></select>
答案 1 :(得分:3)
使用let,而不是var:
$(document).ready(function(){
for(let i = 0 ; i < month.length ;i++ ){
$('#date').append("<option >"+ month[i] +"</option>");
}
}
});
否则,您将整个时间打印一个月[12],这是一个未定义的值,因为您的数组只有11个索引。
答案 2 :(得分:1)
您的问题可以简化,
所以这里有一个片段,其中包含了无关的部分。
有几个问题,你的for循环错误的地方,你错过了}
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
//append month to the date
$(document).ready(function(){
var selDate = $("#date");
for(var i = 0 ; i < month.length ;i++ ){
selDate.append("<option >"+ month[i] +"</option>");
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="date"/>
&#13;
答案 3 :(得分:1)
就个人而言,我会将月份映射到一系列选项,然后立即将它们全部附加。这导致一次更新,您不必跟踪索引。
$(document).ready(function(){
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
$('#date').append($.map(month, function(month){
return '<option>'+ month +'</option>';
}));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="date"></select>
答案 4 :(得分:0)
将文档就绪功能置于文档就绪功能的顶部和内部for循环
$(document).ready(function(){
for(var i = 0 ; i < month.length ;i++ ){
console.log(i);
$('#date').append("<option >"+ month[i] +"</option>");
}
});
答案 5 :(得分:0)
var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
var monthday = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
var years = [ 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017 ];
//append month to the date
$(document).ready(function(){
for(var i = 0 ; i < month.length ;i++ ){
console.log(i);
$('#date').append("<option >"+ month[i] +"</option>");
}
});