You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript生成的日期数据填充到HTML的Select下拉框中?

嘿,我来帮你搞定这个问题!你的代码已经能正确算出当月的所有周一,但在填充到Select元素时犯了两个小错误,我来帮你修正并解释清楚:

解决使用moment.js获取当月周一并填充到Select元素的问题

首先,先说说你现有代码里的问题:

  • ID大小写不匹配:HTML里Select的id是change,但JS里写的是document.getElementById("Change"),浏览器对ID大小写敏感,会找不到目标元素
  • Select选项格式错误:下拉框需要用<option>标签承载选项内容,你直接添加文本加<br>的方式,浏览器不会把它们识别为下拉选项

下面是修正后的完整代码,我标注了关键修改点:

<html>
<body>
  <select id="change">
  </select>
  <br>
</body>
</html>
<script>
    var monday = moment()
        .startOf('month')
        .day("Monday");
    // 处理当月第一个周一不在第一周的情况,跳转到下一个周一
    if (monday.date() > 7) monday.add(7,'d');
    var month = monday.month();
    // 获取目标Select元素,注意ID是小写的change
    const selectElement = document.getElementById("change");
    while(month === monday.month()){
        // 创建一个新的option元素
        const option = document.createElement('option');
        // 设置option的显示文本(MM-DD格式的日期)
        option.textContent = monday.format("MM-DD");
        // 给option设置值(用完整的YYYY-MM-DD格式,方便后续业务使用)
        option.value = monday.format("YYYY-MM-DD");
        // 将option添加到Select下拉框中
        selectElement.appendChild(option);
        // 跳到下一个周一
        monday.add(7,'d');
    }
</script>

关键修改说明:

  • 修正了ID大小写问题,确保能正确获取到Select元素
  • 改用创建<option>元素并追加到Select的方式,这是操作下拉选项的标准做法
  • 给每个option添加了完整日期的value属性,后续如果需要获取用户选中的完整日期会更方便

这样修改后,下拉框就能正常显示当月所有的周一日期啦!

内容的提问来源于stack exchange,提问作者M_Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:13:58