2013-03-30 78 views
0

我實現了這個功能,根據選擇的月份 添加了幾天到選擇列表,但它不起作用。javascript附加一個選項來選擇

function daysInMonth() { 
    var year = document.getElementById(year).value; 
    var month = document.getElementById(month).value; 
    var dayscount = new Date(year,month, 0).getDate(); 
    var select = document.getElementById(day); 
    for (var c = 1 ; c <= dayscount ; c++){ 
    var option = document.createElement("option"); 
    option.text = c ; 
    select.appendChild(option); 
    } 
} 

和這裏的HTML:

<select name="evmonth" id = "month" onchange="daysInMonth()"> 
+2

ID包含雙引號內的document.getElementById(「年」) 。值; –

+0

您是否檢查了控制檯以查看是否有任何錯誤消息? –

+0

第二個建議!這是一個非常大的錯誤類別之一,您可以在控制檯中看到一條錯誤消息,告訴您錯誤是什麼。只需在Chrome中加載您的網頁,打開開發人員工具,然後運行您的代碼。 (重新加載頁面,或根據需要與頁面進行交互以觸發錯誤代碼,然後在控制檯選項卡中查找錯誤消息,在此處查看Sources選項卡,您可以在其中進行交互並詳細檢查代碼和數據大多數神祕的bug都可以通過這種方式進行追蹤 –

回答

0

只是評論:

可以使用Option constructor給自己節省一些打字:

for (var c = 1 ; c <= dayscount ; c++){ 
    select.appendChild(new Option(c)); 
} 

它也更廣泛的支持比document.createElement,但可能你不關心這樣的舊瀏覽器。

此外,而不是創建每次28到31個新的選擇,只考慮添加和刪除最後3根據需要,如:

<script> 

function update(el) { 
    var dayscount = el.value; 
    var daysSelect = el.form.days; 
    var daysLength = daysSelect.length; 
    daysSelect.length = daysLength > 28? 28 : daysLength; 

    while (daysSelect.length < dayscount) { 
     daysSelect.appendChild(new Option(daysSelect.length + 1)); 
    } 
} 

</script> 

<form> 
    <select name="monthLength" onchange="update(this);"> 
    <option value="28">28 
    <option value="29">29 
    <option value="30">30 
    <option value="31">31 
    </select> 

    <select name="days"> 
    </select> 
</form> 
相關問題