2013-08-23 67 views
2

我有以下函數需要三個參數。將參數傳遞給javascript函數時獲取[object]

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和第1天爲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); 
    } 

請幫我這個。

+2

您試圖將該函數用作事件處理程序。在這種情況下調用時,它將傳遞一個事件對象。 – Pointy

+0

@PM:第一個initializeDateDropdown將被調用,然後showDays將被稱爲 – PaRsH

回答

4

當你做.bind('change', showDays),這是等價的:

.bind('change', showDays(event)); 

哪裏eventevent object

你需要的功能的一部分變更爲:

.bind('change', function(){ 
    showDays(year1, month1, day1); 
}); 

既然你需要的參數傳遞給函數(year1month1day1),你需要用它在一個匿名回調功能。

在備註上,.bind is deprecated。使用.on()

.on('change', function(){ 
    showDays(year1, month1, day1); 
}); 
+0

謝謝@rink服務員 – PaRsH