0

我实现了这个功能来根据选择的月份添加天来选择列表,但它不起作用。

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()">
4

1 回答 1

0

只是一个评论:

您可以使用Option 构造函数来节省一些输入:

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>
于 2013-03-30T22:16:52.120 回答