Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载selectBox需要很长时间_Javascript_Jquery_Performance - Fatal编程技术网

Javascript 加载selectBox需要很长时间

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+

下面的代码片段“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++) {
        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个选项,它运行良好,实现了大数据算法。