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);
});