javascript - 如何通过添加新的指定选项来创建依赖 JS 下拉列表?
问题描述
我创建了两个选择标签作为“材料组”,您可以在下面的链接中找到它们:[ https://codepen.io/adan96/pen/ExaRgOe?editors=1010][1]
考虑到名为“材料组”的两个选择标签中的单个文本值,我想选择产品层次结构中的第一个选项。例如:
材料组:
“001 - SWAC”和“001 - SRAY”
Product Hierachy 中的第一个选择应该有选项:
“ASH-09BIR”和“ASH-12BIR”
请检查一些JS代码:
var select1 = document.getElementById("select1");
var select2 = document.getElementById("select2");
var select3 = document.getElementById("select3");
var select4 = document.getElementById("select4");
var select5 = document.getElementById("select5");
var productHierarchy = ["ASH-09BIR", "ASH-12BIR"];
if (select1.options[select1.selectedIndex].text == "001 - SWAC" && select2.options[select2.selectedIndex].text == "001 - SRAY") {
for (var i = 0; i <= productHierarchy.length; i++) {
var opt = document.createElement("option");
opt.value = opt.text = productHierarchy[i];
console.log(opt.value);
select3.add(opt);
}
}
我也试过“select3.appendChild(opt)”。但是,它仍然不起作用,我无法从声明的数组中显示这两个新选项。
你能建议吗?;)
解决方案
首先获取所有选择元素,例如,
const selects = document.querySelectorAll('select')
然后forEach
在所有选择框上做,然后在每个选择上单独做一个addEventListener
,比如,
selects.forEach(select => {
select.addEventListener('change', () => {
//Your logic here...
})
})
然后更改for (var i = 0; i <= productHierarchy.length; i++)
为 for (var i = 0; i < productHierarchy.length; i++)
.. 仅给出(<
而不是),因为..<=
中只有两个元素productHierarchy
推荐阅读
- java - 为什么我的 spring boot Dockerfile 无法连接到 AWS RDS?
- python - VScode使用Python、Anaconda进行文本提取
- android - Android 中的 Geocoder API 是免费的吗?
- javascript - 处理 javascript 数组以在谷歌图表中使用(展平数组内的天数)
- reactjs - 如何将此js文件转换为打字稿?
- gekko - 为什么代码以“未找到解决方案”错误和“退出:收敛到局部不可行点。问题可能不可行”而终止?
- r - 如何在 R 中使用单个命令仅对单个条件进行 pivot_wider
- xamarin - 在 xamarin ios 的 bin/obj 文件夹中生成的 project.ios.exe 文件
- c# - 为什么我无法在 Visual Studio 2019 中选择目标框架?
- java - Maven 构建在不同的主机上选择不同的 Jackson artefacts 版本