我有一个显示选项的选择框。当用户选择一个选项时,我使用XMLHttpRequest根据第一个选择的值获取另一个selct框。 当用户选择选项时,这可以正常工作。 当用户现在想要编辑它时,我使用Jquery从选择框中预选每个项目并自动生成他之前选择的选项。 最多有5个选择框。 我使用setTimeout运行下一个“选择值”函数。
该脚本在我的浏览器中可以在Chrome中正常运行,但在其他浏览器中无效。
这是我的代码:
function oc(a)
{
var o = {};
for(var i=0;i<a.length;i++)
{
o[a[i]]='';
}
return o;
}
var allcats = new Array(<? echo substr($catarr, 0, -1); ?>);
$("#catchoice1 option").each(function() {
var name = $(this).val();
if( name in oc(allcats) ) {
var selectedcategory = name;
setTimeout(catpop1(selectedcategory),1000,true); /// getting a script error on this line in IE.
setTimeout(catpop2,1000,true);
$("#catschosen").attr('disabled', false);
$("#catschosen").attr('checked', true);
$("#Tags3").attr('disabled',false);
}
});
function catpop1(name) { $("#catchoice1 option[value="+name+"]").attr('selected', 'selected').change(); };
function catpop2() {
$("#catchoice2 option").each(function() {
var name = $(this).val();
if( name in oc(allcats) ) {
var selectedcategory = name;
$("#catchoice2 option[value="+name+"]").attr('selected', 'selected').change();
}
});
setTimeout(catpop3,1000,true);
$("#catschosen").attr('checked', true);
$("#Tags3").attr('disabled',false);
};
答案 0 :(得分:0)
在此处更改此功能:setTimeout(catpop1(selectedcategory),1000,true);
仅调用catpop1(selectedcategory);
而不调用函数简化了整个操作并删除了错误。
这与XMLHttpRequest没有任何关系。值得注意的是,该特定行正在抛出错误 - 难怪!