javascript - 如何通过添加新的指定选项来创建依赖的JS下拉列表?

标签 javascript html arrays frontend

我创建了两个选择标签作为“ Material 组”,您可以在下面的链接中找到它们: [https://codepen.io/adan96/pen/ExaRgOe?editors=1010][1]

考虑两个名为“ Material 组”的选择标签中的单个文本值,我想选择产品层次结构中的第一个选项。例如:

Material 组:
“001 - SWAC”和“001 - SRAY”

首先在产品层次结构中选择应该有选项:
“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 中只有两个元素..

Forked Codepen example here...

关于javascript - 如何通过添加新的指定选项来创建依赖的JS下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60183485/

相关文章:

Python - 读写结构化二进制文件

javascript - 仅将类添加到一个 div

html - 我如何制作一堆粘在其父 div 底部的 div?

c - 尝试将变量分配为 C 中数组的长度

jquery - 修复了 div 中的标题表,具有水平和垂直滚动

jquery - 使用 jQuery 和 Masonry 无限滚动获取动态内容

javascript - 获取对象数组的值

javascript - 如何正确从网页中删除 polymer 元素

javascript - Facebook 使用哪种技术显示图像?

javascript - 如何使用 AngularJS 中的另一个输入更改密码验证?