javascript - 如何根据第一个选择选项显示第二个选择选项
问题描述
我正在尝试根据以前的下拉列表选择创建下拉列表。我已经看到了一些 JQuery 答案,但我很确定这很简单,不需要所有 JQuery 插件开销来完成,而且我没有时间学习其他语法(我知道你们中的一些人会说我没有时间不这样做,但这就是我现在所处的位置)。
到目前为止,这是我的代码:
var select = document.getElementById('division');
var dept = document.getElementById('dept').value;
var x = Array("");
var a = Array("A20", "A30", "A40", "A50");
var b = Array("B20", "B30", "B40", "B50");
function divSelect(){
if(dept === ""){
for(var i = 0; i< x.length; ++i) {
select[select.length] = new Option(x[i],x[i]);
}
} else if(dept === "A"){
for(var i = 0; i< a.length; ++i) {
select[select.length] = new Option(a[i],a[i]);
}
} else if(dept === "B"){
for(var i = 0; i< b.length; ++i) {
select[select.length] = new Option(b[i],b[i]);
}
}
}
<select id="dept" onchange='divSelect()'>
<option value=""></option>
<option value="A">A</option>
<option value="B">B</option>
<option value="E">E</option>
<option value="M">M</option>
<option value="R">R</option>
<option value="V">V</option>
</select>
<select id='division'>
<option></option>
</select>
需要有关将选择正确数组以显示在第二个选择列表中的功能的帮助。每次从第一个列表中选择一个新的“部门”时,我还想清除第二个选择列表。
以为我可以使用 select.removeAllRanges(); 就在 for 循环之前执行此操作,但我得到一个错误。
感谢大家可以提供的任何帮助。
解决方案
divSelect()
在函数内移动变量声明。然后,每次单击下拉菜单时,只会初始化变量。
每次选择新select.options.length = 0;
的.division
dept
function divSelect(){
var select = document.getElementById('division');
var dept = document.getElementById('dept').value;
var x = Array("");
var a = Array("A20", "A30", "A40", "A50");
var b = Array("B20", "B30", "B40", "B50");
select.options.length = 0;
if(dept === ""){
for(var i = 0; i< x.length; ++i) {
select[select.length] = new Option(x[i],x[i]);
}
} else if(dept === "A"){
for(var i = 0; i< a.length; ++i) {
select[select.length] = new Option(a[i],a[i]);
}
} else if(dept === "B"){
for(var i = 0; i< b.length; ++i) {
select[select.length] = new Option(b[i],b[i]);
}
}
}
<select id="dept" onchange='divSelect()'>
<option value=""></option>
<option value="A">A</option>
<option value="B">B</option>
<option value="E">E</option>
<option value="M">M</option>
<option value="R">R</option>
<option value="V">V</option>
</select>
<select id='division'>
<option></option>
</select>
推荐阅读
- sql - 过程中的 DBMS_UTILITY.COMPILE_SCHEMA
- c++ - 为什么 switch 和 if 语句与转换运算符的行为不同?
- apache-spark - 自定义 /src/main/resources/log4j.properties 未在 Spark 2.2 中加载
- javascript - Js:解析 .mov 元数据
- c# - 防止在逗号分隔的字符串中替换已替换的字符串
- android - FusedLocationProviderClient api异常,同时申请位置更新坐标
- emacs - Emacs 单引号字符串中的通用模式被突出显示
- angular - .NET Core 2/Angular 5 图像压缩
- php - 我想在 Prestashop 中通过 id 获取产品,并列出它们
- ios - 呈现的 UIViewController 在 segue 动画后消失