下面的代码段中,“ 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(''));
}
答案 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兼容时。