0

我正在尝试编写一个简单的 Javascript 函数来在更改月份时更新选择框中的日期:

/* automatically update days based on month */
function updateMonth(iMonth, iDay) {
    var el = document.getElementById(iDay);
    el.options.length = 0;
    var d = new Date();
    for(i = 0; i < (32 - new Date(d.getFullYear(), iMonth, 32).getDate()); i++) {
        option = new Option(i, i);
        el.options[i] = option;
    }
}

<select name="start_month" id="start_month" onchange="updateMonth(this.value, 'start_day');">
<option>...</option>
</select>
<select name="start_day" id="start_day">
<option>...</option>
</select>
<select name="start_year" id="start_year">
<option>...</option>
</select>

首先,它似乎正在更新,但我得到了疯狂的结果。2 月给了我 30 天,1 月 27 日,它们都从 0 开始?其次,我不确定除了月份之外是否还需要考虑年份?

任何帮助理解这一点将不胜感激。

http://jsfiddle.net/NK7yd/

4

1 回答 1

1

你的功能应该是

window.updateMonth= function(iMonth, iDay) {
    var el = document.getElementById(iDay);
    el.options.length = 0;

    for(var d = new Date(2013,iMonth-1,1); d.getMonth()==iMonth-1; d.setDate(d.getDate()+1)) {
        option = new Option(d.getDate(), d.getDate());
        el.options[d.getDate()-1] = option;
    }; 
}

我有必要从带有年份的选择中读取值(而不是硬编码的 2013 年)。 http://jsfiddle.net/b5XMM/3/

于 2013-08-21T14:39:22.510 回答