2010-01-12 103 views
1

我有以下代碼。該代碼基於完成的選擇填充列表框。但我的代碼在IE 7 &失敗對IE 6單擊問題在IE 6

//---------------------------------------------------------------------------------------------- 
//fill the location list on the basis of Country 

function FillLocationList() 
{ 
    var opt = document.createElement("OPTION"); 
    var selected =document.getElementById('drpCountryName').selectedIndex; 
    var size = document.getElementById('drpCountryName').options.length; 
    if(!event.ctrlKey && !event.shiftKey) 
    { 

     document.getElementById('drpLocation').options.length = 0; 
     for(var i=0;i<locationArray.value.length;i++) 
     { 

      //if(document.getElementById('drpLocationReportsTo').value == locationArray.value[i].LocationRptId) 
      if(document.getElementById('drpCountryName').value == locationArray.value[i].CountryCode) 
      { 
       opt = document.createElement("OPTION"); 
       opt.text = locationArray.value[i].LocationName; 
       opt.value=locationArray.value[i].LocationId; 
       document.getElementById("drpLocation").options.add(opt); 
      } 
     } 

    } 


    else if(event.ctrlKey || event.shiftKey) 
    { 

     document.getElementById('drpLocation').length = 0; 
     for(j=0;j<document.getElementById('drpCountryName').length;j++) 
     { 
      var currentLocation = document.getElementById('drpCountryName').options[j].value; 
      if(document.getElementById('drpCountryName').options[j].selected) 
      { 
       for(var i=0;i<locationArray.value.length;i++) 
       { 

        if(currentLocation == locationArray.value[i].CountryCode) 
        { 
         opt = document.createElement("OPTION"); 
         opt.text = locationArray.value[i].LocationName; 
         opt.value=locationArray.value[i].LocationId; 
         document.getElementById("drpLocation").options.add(opt); 
        } 
       } 
      } 
     } 

    } 

} 
+0

它究竟在哪裏失敗? – 2010-01-12 12:32:49

+0

適用於IE6的我,請完整的測試用例。但是請注意,'options.add'是一種非標準的方法,不能在IE之外工作(而不是使用'options [options.length] = opt'),並且全局'event'的使用僅限於IE並且在任何情況下可能都不宜)。 – bobince 2010-01-12 13:48:45

回答

1

是IE6下燒製的功能?因爲常見的問題是將該函數附加到onclick事件(在IE6下有問題)。

改爲使用onchange

+0

我還沒有使用onClick – Janmejay 2010-01-12 12:47:23

0

如果你是從IE6的onclick中觸發它,試試這個,如果你還沒有這樣做。 IE6在onclick事件中觸發了一些javascript函數的問題。

onclick =「FillLocationList(); event.returnValue = false; return false;」

+0

這似乎也是一個間歇性問題,在我剛剛完成的一些頁面中返回false;它工作正常。在其他情況下,它只是不起作用,所以我不得不使用這項工作。你不喜歡IE6。 – 2010-01-12 12:51:19

+0

我發現一些延遲或不同的內部執行路徑導致這種間歇性問題。 – 2010-01-12 12:59:22

+0

有趣的是,下次遇到問題時我會關注執行路徑。謝謝。 – 2010-01-12 13:19:23