我有以下带三个参数的函数。
initializeDateDropdown("year", "month", "day");
function initializeDateDropdown(year1,month1,day1) {
var currentYear = new Date().getFullYear();
$("#"+year1).append(function () {
var yearList = '';
for (var i = 1951; i <= currentYear; i++) {
yearList += '<option value="' + i + '">' + i + '</option>';
}
return yearList;
}).val(currentYear)
.add($('#'+month1).val(new Date().getMonth()))
.bind('change', showDays);
showDays(year1, month1, day1);
$('#'+day1).val(new Date().getDate());
}
在showDays()
方法的定义中,当我尝试显示year1时,我会将[object] [object]
和month1和day1作为undefined
。
有人可以告诉我这段代码有什么问题吗?
以下是showDays方法定义。
function showDays(year, month, day) {
alert(year);
var days = new Date($("#" + year).val(), parseInt($('#' + month).val(), 10) + 1, 0).getDate();
var prevSelectedDate = $('#' + day).val();
$('#' + day).empty();
for (var i = 1; i <= parseInt(days, 10) ; i++) {
$('#' + day).append($('<option />', { text: i, value: i }));
}
$('#' + day).val(prevSelectedDate);
}
请帮助我。
答案 0 :(得分:4)
执行.bind('change', showDays)
时,这相当于:
.bind('change', showDays(event));
其中event
是event object。
您需要将该部分功能更改为:
.bind('change', function(){
showDays(year1, month1, day1);
});
由于您需要将参数传递给函数(year1
,month1
,day1
),因此需要将其包装在匿名回调函数中。
在次要说明中,.bind
is deprecated。使用.on()
:
.on('change', function(){
showDays(year1, month1, day1);
});