【发布时间】:2016-07-14 01:02:55
【问题描述】:
我得到了以下两个dropdown 列表,我想删除在任一列表中选择的选项。因此,如果选择了选项 1,它将不会出现在列表 2 中。
<select class='form-dropdown' name='first' id='first'>
<option value='none' selected>No Choice</option>
<option value='Workshop 1'> Workshop 1 </option>
<option value='Workshop 2'> Workshop 2 </option>
<option value='Workshop 3'> Workshop 3 </option>
<option value='Workshop 4'> Workshop 4 </option>
<option value='Workshop 5'> Workshop 5 </option>
</select>
<select class='form-dropdown' name='second' id='second'>
<option value='none' selected>No Choice</option>
<option value='Workshop 1'> Workshop 1 </option>
<option value='Workshop 2'> Workshop 2 </option>
<option value='Workshop 3'> Workshop 3 </option>
<option value='Workshop 4'> Workshop 4 </option>
<option value='Workshop 5'> Workshop 5 </option>
</select>
这在普通的旧 JavaScript 中怎么可能实现?
编辑:
通过在 window.onload() 中加载 EventListener 解决了错误 Uncaught TypeError: Cannot read property 'addEventListener' of null,见下文
window.onload = function () {
document.getElementById("first").addEventListener("change", function() {
show_all("second");
document.querySelector("#second option[value='"+this.value+"']").style.display="none";
});
document.getElementById("second").addEventListener("change", function() {
show_all("first");
document.querySelector("#first option[value='"+this.value+"']").style.display="none";
});
};
function show_all(select_name){
var second_options = document.querySelectorAll("#"+select_name+" option");
for(var i=0;i<second_options.length;i++){
second_options[i].style.display="block";
}
}
【问题讨论】:
-
每次更改第一个值时,用第一个值填充第二个下拉列表会不会更好?
-
我的问题是,我的表单(其中包含三个列表)不适用于 Zer00ne 提供的代码,所以我认为这是因为 JQuery 的东西。这也是我想要一个纯 JavaScript 解决方案的原因。
标签: javascript dropdown