簡體   English   中英

添加選擇選項和其他選擇標簽

[英]Add select option with other select tag

我想使用<select id="dropdown_for_add">將列表添加到<select id="mySelect">

如果我選擇“添加項目”選項,它將在<select id="mySelect">

問題是

  • 添加項目后,如果我選擇<select id="dropdown_for_add">其他選項(A,B,C選項), <select id="mySelect">刪除最近添加的<select id="mySelect">

  • 如何一次添加兩個以上的選項? 現在,我只能將一項添加到<select id="mySelect">

 function myFunction() { if (document.getElementById("dropdown_for_add").value == 2) { var x = document.getElementById("mySelect"); var option = document.createElement("option"); option.text = "Item1"; x.add(option); option.text = "Item2"; x.add(option); } } 
 <form> <select id="mySelect"> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select> <select id="dropdown_for_add" onchange="myFunction()"> <option value="1">A</option> <option value="2">Add item</option> <option value="3">B</option> <option value="4">C</option> </select> </form> <br> 

這是預期的行為。 由於option指向相同的DOM元素,因此您不能將其附加兩次,最簡單的解決方案是創建另一個option

 var option2 = document.createElement("option");
 option2.text = "Item2";
 x.add(option2);

要刪除選項,您需要進行迭代

if (document.getElementById("dropdown_for_add").value == 2) {
    ...
} else {
    for (var i = x.length - 1; i >= 0; i--) {
        if (x.options[i].value == 'Item1' || x.options[i].value == 'Item2') {
            x.remove(i);
        }
    }
}

 function myFunction() { var x = document.getElementById("mySelect"); if (document.getElementById("dropdown_for_add").value == 2) { var option = document.createElement("option"); option.text = "Item1"; x.add(option); var option2 = document.createElement("option"); option2.text = "Item2"; x.add(option2); } else { for (var i = x.length-1; i >= 0; i--) { if (x.options[i].value == 'Item1' || x.options[i].value == 'Item2') { x.remove(i); } } } } 
 <select id="dropdown_for_add" onchange="myFunction()"> <option value="1">A</option> <option value="2">Add item</option> <option value="3">B</option> <option value="4">C</option> </select> <select id="mySelect"> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select> 


其他選項是使用cloneNode()

 var option2 = option.cloneNode();
 option2.text = "Item2";
 x.add(option2);

 function myFunction() { var x = document.getElementById("mySelect"); if (document.getElementById("dropdown_for_add").value == 2) { var option = document.createElement("option"); option.text = "Item1"; x.add(option); var option2 = option.cloneNode(); option2.text = "Item2"; x.add(option2); } else { for (var i = x.length-1; i >= 0; i--) { if (x.options[i].value == 'Item1' || x.options[i].value == 'Item2') { x.remove(i); } } } } 
 <select id="dropdown_for_add" onchange="myFunction()"> <option value="1">A</option> <option value="2">Add item</option> <option value="3">B</option> <option value="4">C</option> </select> <select id="mySelect"> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select> 

一種方法是使用Select add()方法 然后,您必須使用remove方法才能remove添加的elements

 function myFunction() { if (document.getElementById("dropdown_for_add").value == 2) { var x = document.getElementById("mySelect"); var option = document.createElement("option"); x.add(new Option('Item1',"Item1")); x.add(new Option('Item2',"Item2")); } else{ var x = document.getElementById("mySelect"); if(x[x.length-1].text=="Item2"){ x.remove(x.length-1); x.remove(x.length-1); } } } 
 <select id="dropdown_for_add" onchange="myFunction()"> <option value="1">A</option> <option value="2">Add item</option> <option value="3">B</option> <option value="4">C</option> </select> <select id="mySelect"> <option>Apple</option> <option>Pear</option> <option>Banana</option> <option>Orange</option> </select> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM