Javascript:如何将所有选项从一个select元素复制到另一个select元素?

Javascript:如何将所有选项从一个select元素复制到另一个select元素?,javascript,html,select,option,Javascript,Html,Select,Option,如何将一个select元素的所有选项复制到另一个元素?请给我最简单的方法,我对循环过敏 请帮帮我。提前谢谢 使用jqueryforeach $("#the-id option").each(function() { var val = $(this).val(); var txt = $(this).html(); $("the-other-id").append( $('<option></option>').val(val).h

如何将一个
select
元素的所有
选项
复制到另一个元素?请给我最简单的方法,我对循环过敏

请帮帮我。提前谢谢

使用jqueryforeach

$("#the-id option").each(function() {
    var val = $(this).val();
    var txt = $(this).html();
    $("the-other-id").append(
        $('<option></option>').val(val).html(txt);
    );
});
$(“#id选项”)。每个(函数(){
var val=$(this.val();
var txt=$(this.html();
$(“另一个id”).append(
$('').val(val.html(txt);
);
});

不循环的最简单方法之一是使用
jquery
select1
=select1的id,
select2
=select2的id):

jquery

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

你可以很容易地通过


1.
2.
3.
1.
2.
3.
$(文档).ready(函数(){
$(“#sel2”).html($(“#sel1”).html());
});
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>
我维护了一些像IE7一样运行的IE11“兼容性模式”页面,而上面的纯javascript解决方案对我来说并不管用。第一个开始选项标记将使用直接的innerHTML赋值莫名其妙地剥离

对我有效的方法是将select的option集合中的每个选项显式地附加到新的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);
}
var fromSelect=document.getElementById('a');
var-toSelect=document.getElementById('b');
toSelect.innerHTML=“”;
对于(变量i=0;i

希望这能帮助其他陷入兼容模式的人,因为在谷歌搜索中,该页面位于列表的顶部。

这是一个较老的线程,但我希望下面的内容能对其他人有所帮助。根本没有循环

function copyFromMultiselect(srcId,targetId, allFlag){
    if(allFlag){
        $("#"+targetId).append($("#"+srcId).html());
        $("#"+srcId).empty();
    }else{
        $("#"+targetId).append($("#"+tabContentId+" #"+srcId+" option:selected"));
    }
  }
//在使用下拉菜单时,可以按如下方式修改第一个ans以获得直接结果
装载
函数myFunction1(){
var first=document.getElementById('selector_a');
var second=document.getElementById('selector_b');
var chk=document.getElementById('selector_main')。值;
如果(chk=“1”)
var options=first.innerHTML;
其他的
var options=second.innerHTML;
var out=document.getElementById('selector_c');
out.innerHTML=选项;
}
--选择--
方案A
方案B
--挑选--
op1
作品2
--挑选--
作品3
作品4
--首先选择col1--

伙计,我讨厌循环。。。有没有办法不用循环就可以做到这一点?另外,我不使用jQuery。好吧,还有一个问题,我不使用jQuery。。。可能吗?啊,谢谢!不幸的是,我不能将多个答案标记为正确答案。也许有人会觉得这很有帮助。我有一个类似的任务,我想在表列的所有行上复制一个select。我使用了sel1=sel0。cloneNode(正确)非常有用,@Singagirl。非常感谢。请注意稍后更改id。此项为+1。其他答案无法将一个选择复制到一个新的选择,没有保留到旧选择的链接(不是真正的克隆),或者其他答案比我需要的要多得多不建议使用没有描述的代码唯一答案
var first = document.getElementById('selector_a');
var options = first.innerHTML;

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

second.innerHTML = options;
$('#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.
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);
}
function copyFromMultiselect(srcId,targetId, allFlag){
    if(allFlag){
        $("#"+targetId).append($("#"+srcId).html());
        $("#"+srcId).empty();
    }else{
        $("#"+targetId).append($("#"+tabContentId+" #"+srcId+" option:selected"));
    }
  }
    //first ans can be modified as follows to get direct result while using dropdown
    <html>
    <head>
    <script>
    onload
    function myFunction1(){     
    var first = document.getElementById('selector_a');
    var second = document.getElementById('selector_b');
    var chk=document.getElementById('selector_main').value;
        if(chk == "1")
        var options = first.innerHTML;
        else
        var options = second.innerHTML;
    var out = document.getElementById('selector_c');
    out.innerHTML = options;
    }
    </script>
    </head>
    <body onload="myFunction1()">
    <select id="selector_main" onchange="myFunction1()">
    <option value="none" disabled>--choose--</option>
    <option value="1">option_A</option>
    <option value="2">option_B</option>
    </select>
    <select id="selector_a" hidden>
    <option value="none" disabled>--select--</option>
    <option>op1</option>
    <option>op 2</option>
    </select>

    <select id="selector_b" hidden>
    <option value="none" disabled>--select--</option>
    <option>op 3</option>
    <option>op 4</option>
    </select>
    <select id="selector_c">
    <option>--select col1 first--</option>   
    </select>
    </body>
    </html>