我有一个代码在javascipt填充下拉选项列表。 该列表包含超过10,000个数据。 我调查了这个问题,发现原因是大量的数据。如何防止无响应的脚本?
这里是代码:
$("select#mdl-criteria-category").change(insertCriteriaOptions);
$("select#mdl-criteria-level").change(insertCriteriaOptions);
$("select#mdl-criteria").change(checkIfCriteriaExists);
function insertCriteriaOptions() {
var skillId = $("select#mdl-criteria-category").val();
var level = $("select#mdl-criteria-level").val();
if (skillId != '-' && level != '-') {
removeAllOptions("#mdl-criteria");
addDefaultOption();
filterCriteriaOptions(skillId, level);
}
}
function filterCriteriaOptions(skillId, level) {
var optionId = skillId + "-" + level;
for (var key in criteriaOptionList) {
var id = key.split("-");
if (id[0] == skillId && id[1] == level) {
var option = document.createElement("option");
option.text = criteriaOptionList[key];
option.value = id[2];
document.getElementById("mdl-criteria").add(option);
}
}
}
function populateCriteriaOptionList() {
$("#mdl-criteria option").each(function() {
if (this.id != '-') {
var id = this.id + '-' + this.value;
criteriaOptionList[id] = this.text;
}
});
}
我调查的结果表明,这是因为populateCriteriaOptionList()函数,因为这种方法需要得到10,000个数据是criteriaOptionList阵列英寸 任何人都知道在这种情况下如何解决任何问题? 也许有人在那里可以帮助我解决我的问题。先谢谢了。
问题是? –
你在jQuery Load上调用populateCriteriaOptionList函数吗? –
嗯,我希望选项元素的id不是“ - ”,如代码所示,id应该是唯一的。此外,我认为你知道问题是什么,太多的项目,迭代10,000个项目需要时间... – Esko