我想在html select中附加多个选项。
目前我在循环中使用下面的代码,但它使工作变慢,因为它每次都必须添加新选项。
代码片段:
s.options[s.options.length]= new Option(url, '1');
所以我想,如果我可以一次添加所有选项,而不是像上面那样一个一个地添加,也许它可以让它更快一点。
请建议一个比这个更快的功能。谢谢
我想在html select中附加多个选项。
目前我在循环中使用下面的代码,但它使工作变慢,因为它每次都必须添加新选项。
代码片段:
s.options[s.options.length]= new Option(url, '1');
所以我想,如果我可以一次添加所有选项,而不是像上面那样一个一个地添加,也许它可以让它更快一点。
请建议一个比这个更快的功能。谢谢
尝试这个,
s.options[s.options.length]=function Option(url,'1') { // statements go here };
您可以使用 a 来做到这一点,DocumentFragment
但我不确定浏览器是否支持。它当然适用于所有浏览器的当前版本(包括 IE 10),但我怀疑它是否适用于旧 IE。
var frag = document.createDocumentFragment();
for (var i = 0; i < 10; ++i) {
var option = document.createElement("option");
option.value = "" + i;
option.text = "Option " + i;
frag.appendChild(option);
}
s.appendChild(frag);
演示:http: //jsfiddle.net/QsNpe/
尝试这个:
var tmpOptions = [];
for(var i=0; i<optionsLength; i++) {
tmpOptions[i] = new Option(url, i);
}
s.options = tmpOptions;
尝试这个
var dataArr = [{'value':'val1','text':'text1'},
{'value':'val2','text':'text2'},
{'value':'val3','text':'text3'},
{'value':'val4','text':'text4'},
{'value':'val5','text':'text5'},
{'value':'val6','text':'text6'},
{'value':'val7','text':'text7'}];
// Removes all options for the select box
$('#optExample option').remove();
// .each loops through the array
$.each(dataArr, function(i){
$('#optExample').append($("<option></option>")
.attr("value",dataArr[i]['value'])
.text(dataArr[i]['text']));
});