2012-05-09 31 views
3

這是我在這裏的第一篇文章,雖然我瀏覽了很多答案。我遇到了一個問題,IE8將繼續拋出「Object Expected」錯誤。我用IE8的開發者工具和它指向「mymh.js」文件對象預期的IE8 JS/JQuery問題IE8

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="/MyMHome/javascript/mymh.js"></script> 

mymh.js只有文件具有下面的代碼

$(document).ready(function() {   

     $('#hNumber').focus(); 

     $('#ddlDir').change(function() { 

      var selVal = $('#ddlDir').val(); 

      if (selVal == 'N' || selVal == 'S' || selVal == 'E' || selVal == 'W'){ 

      $.getJSON('/MyMHome/DimeServlet?strDir='+$('#ddlDir option:selected').val(), function(data) { 

        $('#ddlSt') 
        .find('option') 
        .remove() 
        .end() 

       $.each(data, function(i,field){ 
        var name = field; 
        $('#ddlSt') 

        .append('<option value= ' + '"' + name + '"' + '>' + name + '</option>'); 
        }); 
       }); 

       $('#ddlSt').focus();  
      }else{ 

        $('#ddlSt') 
        .find('option') 
        .remove() 
        .end() 
        .append('<OPTION selected value="">Choose a direction first</OPTION>'); 

       }     
     }) 
     .trigger('change');    

     $('#reset').click(function(){ 
      $('#ddlSt') 
      .find('option') 
      .remove() 
      .end() 
      .append('<OPTION selected value="">Choose a direction first</OPTION>'); 
      $('#hNumber').focus();     
     }); 

     $('#hNumber').bind('keyup', function() { 
      if($('#hNumber').val().length == 5){ 
        $('#ddlDir').focus(); 
      } 
     });    

     $('#submitQuery').click(function(){ 
      var houseNumber = $('#hNumber').val(); 
      if(houseNumber.replace(/\s+/g, '').length == 0){ 
       alert('Please enter a house number.'); 
       $('#hNumber').focus(); 
       return false; 
      }else if((!$.isNumeric(houseNumber)) || houseNumber.indexOf('-') > -1 || houseNumber.indexOf('.') > -1){ 
       alert('Please enter numbers only. You will be prompted later, if the address requires a suffix.'); 
       $('#hNumber').focus(); 
       return false; 
      }else if(houseNumber < 100 || houseNumber > 12999){ 
       alert('Please enter a house number between 100 and 12999'); 
       $('#hNumber').focus(); 
       return false; 
      }else if($('#ddlDir option:selected').val() == 'none'){ 
       alert('Please select a street direction.'); 
       $('#ddlDir').focus(); 
       return false; 
      }  
     });   

     $('form').keypress(function(e) { 
       if (e.keyCode == '13') { 
       e.preventDefault(); 
       if($('#ddlSt').is(":focus")){ 
        $('#submitQuery').trigger('click'); 
       } 
       else{ 
        return false; 
       } 
       } 
     }); 
}); 

錯誤指向<script ... mymh.js></script>但在調試器指向到$document.ready(function() {

任何人都看到任何錯誤,爲什麼IE8會不斷拋出該錯誤?

+0

你沒有加載任何其他JS庫(如原型),對吧?另外,您應該嘗試使用F12中的「開始調試」按鈕;頁面將重新加載,並且JS調試器將停止在引發異常的行上,可能會更容易找到問題。 –

+0

我正在加載的唯一JS庫是JQuery庫。而我正在導入的唯一外部JS文件是mymh.js文件。我將嘗試調試器以查看會發生什麼 –

+0

mymh.js中的對象預計行1。 ($),它是$(document).ready(function(){ –

回答

7

嘗試16

$('#ddlSt') 
.find('option') 
.remove() 
.end() 

$.each(data, function(i,field){ 

$('#ddlSt') 
.find('option') 
.remove() 
.end(); 

$.each(data, function(i,field){ 
+0

OMG。How我是否錯過了這一點,它爲我解決了這個問題.Grr IE8非常令人頭疼,它適用於所有其他瀏覽器 –

4
$(document).ready(function() { }); 

這個語句放置一個分號在一行的末尾可能拋出的原因如下預期的對象錯誤:

首先,如果我們鏈接到外部JavaScript文件(例如, jquery-1.8.2.min.js)是不正確的。確保你的鏈接是在正確的道路上。我遵守了我裏面的 「JS」 的文件夾,並給出了路徑爲:

<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> 

其次,如果我們寫的腳本標記爲:的

<script type="application/javascript"></script> 

代替

<script type="text/javascript"></script> 
3

位的一箇舊帖子,但它可能派上用場,因爲有人經過,我遇到了同樣的問題,我刪除了腳本標籤中的defer屬性。

<script type="text/javascript" defer="defer" src="js/libs/jquery-1.8.3.min.js"></script> 

到:

<script type="text/javascript" src="js/libs/jquery-1.8.3.min.js"></script> 

爲我工作。

3

這可能不相關,但我剛剛解決了IE8的同類問題 - 在IE9上運行良好的代碼以及在IE8上窒息的所有其他代碼。

答案是爲改變

<script type="text/javascript" src="/myjavascript.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="/myjavascript.js"></script> 

那樣簡單......換句話說,JQuery的第一。這爲我解決了這個問題;因人而異。

4

我在IE8中使用jQuery 2.0.0時遇到了這個問題。根據jQuery網站「jQuery 2.x不支持Internet Explorer 6,7或8」。用jQuery 1.10.2替換jQuery 2.0.0爲我解決了這個問題。