2011-06-01 229 views
16

如何將一個select元素的所有options複製到另一個?請給我最簡單的方法,我對循環過敏。Javascript:如何將所有選項從一個select元素複製到另一個?

請幫幫我。提前致謝!

+1

也許有人會發現它有幫助。我有一個類似的任務,我想複製表列的所有行的選擇。我用sel1 = sel0.cloneNode(true) – Singagirl 2016-07-11 02:45:05

+0

非常有用,@Singagirl。謝謝!請注意稍後更改ID。 – Rodrigo 2017-02-13 01:02:48

回答

20

HTML:

<select id="selector_a"> 
    <option>op 1</option> 
    <option>op 2</option> 
</select> 

<select id="selector_b"> 
    <option>op 3</option> 
    <option>op 4</option> 
</select> 

的javascript:

var first = document.getElementById('selector_a'); 
var options = first.innerHTML; 

var second = document.getElementById('selector_b'); 
var options = second.innerHTML + options; 

second.innerHTML = options; 
2

使用jQuery的foreach?

$("#the-id option").each(function() { 
    var val = $(this).val(); 
    var txt = $(this).html(); 
    $("the-other-id").append(
     $('<option></option>').val(val).html(txt); 
    ); 
}); 
+0

男人,我討厭循環...有沒有什麼辦法可以做到這一點沒有循環?另外,我不使用jQuery。 – dpp 2011-06-01 09:10:23

24

之一而不循環的最簡單的方法中,使用jquery(的選擇1選擇2 select2 = ID select1 = ID):

$('#select1 option').clone().appendTo('#select2'); 

沒有jquery

var select1 = document.getElementById("select1"); 
var select2 = document.getElementById("select2"); 
select2.innerHTML = select2.innerHTML+select1.innerHTML; 
+2

好的,這是另一個問題,我不使用jQuery ...可能嗎? – dpp 2011-06-01 09:11:30

+0

是的,看我的編輯。 – manji 2011-06-01 09:15:35

+0

啊,謝謝!不幸的是,我不能將多個答案標記爲正確。 – dpp 2011-06-01 09:23:14

2

你可以很容易地通過jquery:

<select id="sel1"> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
</select> 

<select id="sel2"> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
</select> 

$(document).ready(function(){ 
    $("#sel2").html($("#sel1").html()); 
}); 
0
$('#cloneBtn').click(function() { 
    var $options = $("#myselect > option").clone(); 
    $('#second').empty(); 
    $('#second').append($options); 
    $('#second').val($('#myselect').val()); 
}); 

This is used to copy the value and the innerHTML. Its better to copy the key, 
value and the OPTIONS.i.e. the selected value and the options. 
3

我維持其運行像IE7一些IE11的 「兼容模式」 的頁面,上面的純JavaScript的解決方案做了工作爲了我。使用直接的innerHTML分配,第一個打開選項標記將被莫名其妙地剝離。

我的工作是明確地將select的選項集合中的每個選項附加到新選擇。在這個例子中,它支持一個AJAX調用,所以我首先清除了列表,但我相信這也可以追加。

var fromSelect = document.getElementById('a'); 
var toSelect = document.getElementById('b'); 
toSelect.innerHTML = ""; 
for (var i = 0; i < fromSelect.options.length; i++) { 
    var option = fromSelect.options[i]; 
    toSelect.appendChild(option); 
} 

希望這有助於別人誰是停留在兼容模式下,因爲這個頁面在列表中的谷歌搜索的頂部。

0

它的老線程,但我希望以下幫助某人。根本沒有迴路。

function copyFromMultiselect(srcId,targetId, allFlag){ 
    if(allFlag){ 
     $("#"+targetId).append($("#"+srcId).html()); 
     $("#"+srcId).empty(); 
    }else{ 
     $("#"+targetId).append($("#"+tabContentId+" #"+srcId+" option:selected")); 
    } 
    } 
相關問題