2011-02-25 147 views
0

我有一個顯示選項的選擇框。當用戶選擇一個選項時,我使用XMLHttpRequest根據第一個選擇的值獲取另一個選擇框。 當用戶正在選擇選項時,此工作正常。 當用戶現在想編輯它時,我使用Jquery從選擇框中預選每個項目,並自動生成他以前選擇的選項。 最多有5個選擇框。 我使用setTimeout來運行下一個「選擇值」函數。使用jquery和XMLHttpRequest從多個選擇框中預選選項

該腳本在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

在此修改功能:setTimeout(catpop1(selectedcategory),1000,true);只是catpop1(selectedcategory);沒有調用的函數簡化了整個事情並刪除了錯誤。

這與XMLHttpRequest無關。最好注意的是該特定行引發了錯誤 - 難怪!

相關問題