5

Tôi chỉ gặp lỗi trong IE (v8, tôi không biết nếu nó xảy ra trong các phiên bản IE cũ hơn, nhưng nó không xảy ra trong Chrome hoặc Firefox) tôi được thông báo sau khi tôi sử dụng debbuger IE dev công cụ của:Lỗi "Đối tượng được mong đợi" chỉ sử dụng jQuery trong IE8

Breaking on JSScript runtime error - Object Expected 

Dưới đây là mã bị ảnh hưởng của tôi:

$('#deviceProfileSelection').change(function() { //affected line!!!! 
// rest of my code... 
}); 

này yếu tố #deviceProfileSelection được định nghĩa như sau:

<select id="deviceProfileSelection"> 
    <option value=""><?php echo getSysMessage("dropDownSelect")?></option> 
    <!-- and other values...--> 
</select> 

Tôi đã thử xác định trình nghe .change thành $(document).ready(function() {}); nhưng không thành công chút nào. Bạn có ý tưởng nào khác không?

EDIT

Tôi đã cố gắng để bao gồm một div sử dụng một cấu trúc quyết định PHP, nơi mà nếu một điều kiện là đúng, nó sẽ in một div. Nhưng, thực ra nó không in, ý tôi là, nó không in thẻ mở 'div', chỉ có thẻ đóng 'div'.

Trình duyệt có thể giải thích lỗi này, nhưng IE8 và khả năng không hoạt động của IE này đã gây ra sự cố.

+3

làm bạn có jQuery bao gồm trên trang trước khi thử gọi '$'? – jbabey

+1

Bạn đang sử dụng phiên bản jQuery nào? – putvande

+4

xin lưu ý rằng jQuery v2.x không hỗ trợ IE8. Nếu bạn có jQuery v2, bạn sẽ cần phải sử dụng v1.x thay thế. – Spudley

Trả lời

2

Vấn đề là bạn chưa thêm jQuery vào mã của mình. Thêm dòng sau bên trong thẻ <head>:

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

Điều đó sẽ khắc phục vấn đề của bạn.

+1

OMG, nó hoạt động hoàn hảo! Tôi đã cố gắng bao gồm một div bằng cách sử dụng một cấu trúc quyết định php, nếu một điều kiện là đúng, nó sẽ in một div.Nhưng, thực ra nó không in, ý tôi là, nó không in thẻ mở 'div', chỉ có thẻ đóng 'div'. –

+0

Chrome và Firefox bỏ qua div "chưa mở" này và đó là lý do tại sao tôi không thể thấy lỗi. –

1

Kiểm tra như sau:

  1. là jQuery có khi mã này được thực thi? (Tôi sẽ làm một cảnh báo trên $ và xem những gì bạn nhận được)
  2. Đảm bảo rằng phần tử deviceProfileSection tồn tại.
1

Tôi đã có một vấn đề tương tự như sau trước với IE8, nếu nó cùng một vấn đề, nó không thể tìm thấy thư viện jquery, kiểm tra đường dẫn của bạn hoặc thử nghiệm nó với một cdn

+0

Không, chắc chắn nó đã được bao gồm. Tôi có thể sử dụng các yếu tố khác bình thường. –

1

Tôi đã thử các mã sau trong IE8, và nó hoạt động như mong đợi. Như được đề xuất trong các câu trả lời khác, tôi đã sử dụng phiên bản mới nhất của JQuery tương thích với IE8 từ JQuery CDN. Không sử dụng 2.x - nó không hoạt động với các trình duyệt cũ hơn. Ngoài ra, hãy đảm bảo mã sự kiện thay đổi của bạn nằm trong trình xử lý document.ready.

<html> 
    <head> 
     <title>IE8 Object Expected</title> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       $("#deviceProfileSelection").change(function(){ 
        console.log("#deviceProfileSelection changed to " + $(this).find(":selected").text()); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <form> 
      <select id="deviceProfileSelection"> 
       <option value="">Select...</option> 
       <option value="1">One</option> 
       <option value="2">Two</option> 
       <option value="3">Three</option> 
      </select> 
     </form> 
    </body> 
</html> 
0

Chỉ cần để không ai lặp lại sai lầm của tôi, kể từ khi bạn đang sử dụng jquery từ một trang web bên ngoài (src = "http://code.jquery.com/jquery-1.10.2.min.js"), chắc chắn rằng internet của bạn đang làm việc