我有一些javascript,它可以动态生成大量的<select>
选项(<option>
)元素列表。而且我需要能够使用“onchange”事件根据另一个<select>
菜单的值在3个或4个不同的生成列表之间切换。存储/生成<select>选项供以后使用?
有没有一种方法可以存储多个选项列表,然后根据需要将选择对象重定向到适当的列表?
现在,我必须删除所有选项,并重新添加一个。这似乎非常浪费/耗时。
我有一些javascript,它可以动态生成大量的<select>
选项(<option>
)元素列表。而且我需要能够使用“onchange”事件根据另一个<select>
菜单的值在3个或4个不同的生成列表之间切换。存储/生成<select>选项供以后使用?
有没有一种方法可以存储多个选项列表,然后根据需要将选择对象重定向到适当的列表?
现在,我必须删除所有选项,并重新添加一个。这似乎非常浪费/耗时。
你可以存储选项的不同列表作为简单数组,然后做这样的事情:
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这样的库可以帮助完成的代码少得多。
似乎它是jQuery模板的完美例子。 您可以将每个案例的所有数据存储为json。创建一个<的模板,选择>元素。当用户改变某个参数时,你会选择一个合适的json并绑定到一个模板。你可以找到例子here。
DocumentFragments可能是你要找的。
http://ejohn.org/blog/dom-documentfragments/
此外,各种操作 - 如插入节点作为孩子另一节点的 - 可采取的DocumentFragment对象作为参数; 这会导致DocumentFragment的所有子节点都被移动到此节点的子列表中,即 。
我想这是每次重新创建选项数组的重大改进。但是没有一种标准的方法来做到这一点,而不是一次推送选项? – 2011-12-14 22:08:00
这看起来像现在的阻力最小的路径。 – 2011-12-14 22:56:19