从选择选项复制到动态选择选项

时间:2012-06-08 00:18:37

标签: javascript jquery html html-select

如何从第一个选项中获取动态选择创建的选项的所有选项, 我尝试使用jquery但没有工作:

 for( j = 0; j < i; j++)
     $('#s1 option').clone().appendTo(IS+j);

HTML文件:

<input type="button" value="Add" id="btn1" OnClick="f('dv1');">
<div id="dv1">
    <select id="s1" name="select1">
        <option>
            1
        </option>

        <option>
            2
        </option>
    </select>
</div>

<script type="text/javascript" src="js/functions.js"></script>

functions.js

var i = 1;
function f(x){
    var y = document.createElement('div');
    y.innerHTML = '<br><Select id="IS"'+i+ 'name="NAME"'+i+' > </Select>';
    document.getElementById(x).appendChild(y);
    i++;
}

2 个答案:

答案 0 :(得分:1)

由于您似乎正在创建多个选择对象,因此需要修复jquery选择器以及为选择生成的id。首先,$('#s1 option').clone().appendTo(IS+j); 应改为:

$('#s1 option').clone().appendTo('#IS' + j);

其次,y.innerHTML = '<br><Select id="IS"'+i+ 'name="NAME"'+i+' > </Select>'; 应改为:

y.innerHTML = '<br /><select id="IS'+i+ '" name="NAME'+i+'"></select>';

修改

如果您只是尝试克隆原始下拉列表,则以下内容适用于您:

function f(x){
    // Create new select within its own div
    var y = document.createElement('div');
    y.innerHTML = '<br /><select id="IS'+i+ '" name="NAME'+i+'"></select>';
    document.getElementById(x).appendChild(y);

    // Fill new select with the options from the original
    $('#IS' + i).html($('#s1').html());

    i++;
}

Live DEMO

答案 1 :(得分:0)

如果您因任何原因需要迭代选项而可能需要进行更改

,这是另一种方法
var newSelect = $("<select />");

$.each(primarySelect.options, function (i, opt)
{
   $(newSelect).append($('<option></option>', { 
       value: opt.value, text: opt.text, selected: opt.selected }));
});

JS Fiddle Live Version

请确保不要使用$(primarySelect.options).each(...),因为这在IE中无效。


另请参阅:What is the best way to add options to a select from an array with jQuery?