花费很长时间加载selectBox

时间:2018-11-19 18:12:21

标签: javascript jquery performance

下面的代码段中,“ for ”循环需要很长时间才能将数据加载到选择框,请问有人可以帮我吗?甚至我正在使用对我来说是新的Jquery 1.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(''));
}

1 个答案:

答案 0 :(得分:1)

可能有帮助的是避免使用数组存储选项,而直接将字符串连接起来。

这是一个jsperf比较,使用数组比直接连接字符串要慢80%左右: https://jsperf.com/javascript-test-string-concat-vs-array/1

因此您可以像这样更改功能:

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);
}

之所以在Internet Explorer中运行缓慢,是因为它的Javascript引擎不如其他浏览器先进。 Internet Explorer也将出现问题,让您滚动浏览所有这些选项。 使用其他人已经提到的建议框是一个更好的选择,尤其是当您的应用必须与Internet Explorer兼容时。