存储/生成<select>选项供以后使用?</select>

时间:2011-12-14 22:01:29

标签: javascript html

我有一些javascript可以动态生成大量<select>个选项(<option>)元素。我需要能够使用“onchange”事件根据另一个<select>菜单的值切换3到4个不同的生成列表。

有没有办法可以存储多个选项列表,然后根据需要将select对象重定向到相应的列表?

现在,我必须删除所有选项并一次重新添加一个。这似乎非常浪费/耗费时间。

3 个答案:

答案 0 :(得分:3)

您可以将不同的选项列表存储为简单数组,然后执行以下操作:

function setThisSelect(selectId, optionsArray){
    var sel = document.getElementById(selectId);
    sel.options.length = 0;
    for (var i = 0; i < optionsArray.length; i++)
        sel.options.add(optionsArray[i]);
}

以下是您可以创建选项的方法:

    var optionsArr1 = [];
    for (var i = 0; i < 5; i++) {
        var op = document.createElement("option");
        op.value = i;
        op.text = i;
        optionsArr1.push(op);
    }

这是fiddle

但是如果你想要做很多这样的话,很快就会变得单调乏味。这可能是像jQuery这样的库可以用很少的代码来帮助完成的事情。

答案 1 :(得分:1)

DocumentFragments可能就是您所需要的。

http://ejohn.org/blog/dom-documentfragments/

  

此外,还有各种操作 - 例如将节点作为子节点插入   另一个Node - 可以将DocumentFragment对象作为参数;   这会导致DocumentFragment的所有子节点都存在   移动到此节点的子列表。

答案 2 :(得分:0)

似乎它是jQuery模板的完美案例。 您可以将每个案例的所有数据存储为json。创建&lt; select&gt;的模板元件。当用户更改某些参数时,您将选择一个合适的json并绑定到模板。您可以找到示例here