Javascript 在选择第一个之前先设置第二个,然后可以选择两次相同的值(因为隐藏选项不会取消选择它们).@ZakariaAcharki如果我尝试第二个代码,我会得到未捕获的类型错误:无法设置null的属性“onchange”,这意味着它无法通过idfirst或second
Javascript 在选择第一个之前先设置第二个,然后可以选择两次相同的值(因为隐藏选项不会取消选择它们).@ZakariaAcharki如果我尝试第二个代码,我会得到未捕获的类型错误:无法设置null的属性“onchange”,这意味着它无法通过idfirst或second,javascript,dropdown,Javascript,Dropdown,在选择第一个之前先设置第二个,然后可以选择两次相同的值(因为隐藏选项不会取消选择它们).@ZakariaAcharki如果我尝试第二个代码,我会得到未捕获的类型错误:无法设置null的属性“onchange”,这意味着它无法通过idfirst或second找到其中一个选项,请确保您拥有这些id。@ZakariaAcharki我确信我的html代码中有这些id。这是否可能只适用于jquery?不,答案中没有jquery代码,请尝试使用.addEventListener()检查我的更新。@Zakar
在选择第一个之前先设置第二个,然后可以选择两次相同的值(因为隐藏选项不会取消选择它们).@ZakariaAcharki如果我尝试第二个代码,我会得到未捕获的类型错误:无法设置null的属性“onchange”,这意味着它无法通过id
first
或second
找到其中一个选项,请确保您拥有这些id。@ZakariaAcharki我确信我的html代码中有这些id。这是否可能只适用于jquery?不,答案中没有jquery代码,请尝试使用.addEventListener()
检查我的更新。@ZakariaAcharki这也是我的经历,因此我删除了检查。首先,我认为这会奏效。@ZakariaAcharki这也是我的经历,所以我取消了支票。首先我认为这会奏效。
<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>
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";
}
}
document.getElementById("first").addEventListener("change", event=> {
if (event.target.value === "none") return
document.querySelector(`#second [value="${event.target.value}"]`).remove()
})
<html>
<select class='form-dropdown' name='first' id='first' onchange="fun1(this.value)">
<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' onchange="fun2(this.value)">
<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></html>
<script>
function fun1(val){
updateFun2(val)
}
function fun2(val){
updateFun1(val)
}
function updateFun2(val){
selectobject=document.getElementById('second');
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == val )
selectobject.remove(i);
}
}
function updateFun1(val){
selectobject=document.getElementById('first');
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == val )
selectobject.remove(i);
}
}
</script>
<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>
var first = document.getElementById('first');
var second = document.getElementById('second');
var optionOld = document.createElement("option");
first.addEventListener('change', function() {
var option = second.querySelector('option[value="' + this.value + '"]');
if(optionOld.text != '')
{
second.add(optionOld);
}
optionOld = option;
second.removeChild(option);
});