You need to enable JavaScript to run this app. JavaScript如何用对象键为option值、值为显示文本填充下拉选择框
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何用对象键为option值、值为显示文本填充下拉选择框

代码修改方案

问题原因

你当前代码无法生效主要有两个核心错误:

  • 你定义的months是普通对象,不是数组,没有length属性,无法通过for (let i = 0; i < months.length; i++)的方式遍历
  • months[i].keys()的用法错误,keys()是Object的静态方法,不能直接在对象属性上调用

修正后代码

JS 代码

var monthOptions = document.getElementById("month");
function loadMonths(months){
    monthOptions.innerHTML = '';
    // 遍历对象的键值对
    for (const key in months) {
        // 过滤原型链上的属性
        if (months.hasOwnProperty(key)) {
            var el = document.createElement("option");
            // 显示文本用对象的值
            el.textContent = months[key];
            // value属性用对象的键
            el.value = key;
            monthOptions.appendChild(el);
        }
    }
}

// 调用示例
const months = {"":"--None--", "jan":"January", "feb":"February", "mar":"March"};
loadMonths(months);

如果你的运行环境支持ES6+,也可以用更简洁的Object.entries写法:

function loadMonths(months){
    monthOptions.innerHTML = '';
    Object.entries(months).forEach(([key, value]) => {
        const el = document.createElement("option");
        el.textContent = value;
        el.value = key;
        monthOptions.appendChild(el);
    })
}

HTML 代码

无需修改,和你原有代码一致即可:

<select name="month" id="month" required></select>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:24:04