Javascript 加载selectBox需要很长时间
下面的代码片段“for”循环加载数据到选择框需要很长时间,有人能帮我吗?甚至我也在使用jquery1.3.2,这对我来说是新的 这里的names.response.length是120000条记录Javascript 加载selectBox需要很长时间,javascript,jquery,performance,Javascript,Jquery,Performance,下面的代码片段“for”循环加载数据到选择框需要很长时间,有人能帮我吗?甚至我也在使用jquery1.3.2,这对我来说是新的 这里的names.response.length是120000条记录 function personNameChangedCallback(names){ if(names.response.length > 0){ var options = []; for (var i = 0; i< names.response.length; i+
function personNameChangedCallback(names){
if(names.response.length > 0){
var options = [];
for (var i = 0; i< names.response.length; i++) {
options.push('<option>'+ names.response[i] +'</option>');
}
jQuery('[id=personNameSelected]').append(options.join(''));
}
函数personNameChangedCallback(名称){
如果(names.response.length>0){
var期权=[];
对于(var i=0;i
可以帮助您避免使用数组存储选项,而是直接连接字符串
这是一个jsperf比较,使用数组比直接连接字符串慢80%左右:
因此,您可以这样更改函数:
function personNameChangedCallback(names){
if(names.response.length > 0){
var htmlOptions = '';
for (var i = 0; i< names.response.length; i++) {
htmlOptions += '<option>'+ names.response[i] +'</option>';
}
jQuery('[id=personNameSelected]').html(htmlOptions);
}
函数personNameChangedCallback(名称){
如果(names.response.length>0){
var htmlOptions='';
对于(var i=0;i
它在InternetExplorer中运行缓慢的原因是,它的Javascript引擎不如其他浏览器的Javascript引擎先进。
Internet Explorer在允许您滚动浏览所有这些选项时也会出现问题。
使用其他人已经提到的建议框是一个更好的选择,尤其是当你的应用程序必须与Internet Explorer兼容时。当然,120000是一个疯狂的元素,renderI建议你考虑实现一个autosuggest/autocomplete插件,但不要显示太多的结果ine Chrome,但它需要很长时间,在IET中,选择这么多选项是无用的。我同意@Taplar和Epascrelo,想想那个可怜的用户,他将不得不从这些选项中选择感谢Reto,我修复了这个问题。我每次追加10000个选项,它运行良好,实现了大数据算法。