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

JavaScript联动下拉菜单(Dependent Dropdown)无法正常工作求助

联动下拉菜单问题修复方案

你的代码存在三个关键问题,导致联动效果无法实现:

  • 数据结构错误:typeObject中的子项使用对象语法{}但未定义合法键值对,属于无效语法。需要把这些子项改成数组[]来存储选项列表。
  • 取值逻辑错误:var y = typeObject[typeSel.value][this.value]; 这行逻辑冗余且错误,this.value就是Type下拉框当前选中的值,直接通过typeObject[this.value]就能获取对应的选项数组。
  • 选项添加目标错误:循环中错误地将新选项添加到了Type下拉框(typeSel),而非目标的Case Reason下拉框(caseReasonSel)。

修正后的完整代码

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
var typeObject = {
  "1": ["a", "b", "c"],
  "2": ["d", "e", "f", "g", "h"]
}
window.onload = function() {
  var typeSel = document.getElementById("Type");
  var caseReasonSel = document.getElementById("Case_Reason");
  
  // 初始化Type下拉框选项
  for (var x in typeObject) {
    typeSel.options[typeSel.options.length] = new Option(x, x);
  }
  
  // Type下拉框变动事件
  typeSel.onchange = function() {
    // 清空Case Reason原有选项,保留默认的None
    caseReasonSel.length = 1;
    // 获取当前选中Type对应的选项数组
    var options = typeObject[this.value];
    if (options) {
      // 遍历数组添加到Case Reason下拉框
      for (var i = 0; i < options.length; i++) {
        caseReasonSel.options[caseReasonSel.options.length] = new Option(options[i], options[i]);
      }
    }
  }
</script>
</head>   
<body>

<h1>Cascading Dropdown Examples</h1>

<form name="form1" id="form1" action="/action_page.php">
Type: <select name="Type" id="Type">
    <option value="" selected="selected">None</option>
  </select>
  <br><br>
Case Reason: <select name="Case_Reason" id="Case_Reason">
    <option value="" selected="selected">None</option>
  </select>
  <br><br>
  <input type="submit" value="Submit">  
</form>

</body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:45:33