5

Ich bekomme einen Fehler nur in IE (v8, ich weiß nicht, ob es in älteren IE-Versionen vorkommt, aber es in Chrome oder Firefox nicht vorkommt), was bringt mir die folgende Meldung, wenn ich IE dev Tool debbuger verwenden:"Object expected" Fehler mit jQuery nur in IE8

Breaking on JSScript runtime error - Object Expected 

Hier ist mein betroffener Code:

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

Dieses Element #deviceProfileSelection wird wie folgt definiert:

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

Ich habe bereits versucht, den .change Listener in eine $(document).ready(function() {}); zu definieren, aber überhaupt keinen Erfolg. Irgendeine andere Idee?

EDIT

ich eine PHP-Entscheidungsstruktur verwenden, wo ein div aufzunehmen versuchte, wenn eine Bedingung wahr war, ist es ein div gedruckt werden soll. Aber eigentlich druckte es nicht, ich meine, es druckte nicht das öffnende Tag 'div', nur das schließende Tag 'div'.

Die Browser könnten diesen Fehler interpretieren, aber IE8, und dieses IE-Unvermögen verursachte das Problem.

+3

haben Sie jQuery auf der Seite enthalten, bevor Sie Rufen Sie '$' auf? – jbabey

+1

Welche Version von jQuery verwenden Sie? – putvande

+4

Bitte beachten Sie, dass jQuery v2.x IE8 nicht unterstützt. Wenn Sie jQuery v2 verwenden, müssen Sie stattdessen v1.x verwenden. – Spudley

Antwort

2

Das Problem ist, dass Sie jQuery überhaupt nicht in Ihren Code hinzugefügt haben. In dem <head> Tag nach den innen:

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

, dass Ihr Problem beheben soll.

+1

OMG, es funktioniert perfekt! Ich habe versucht, ein div mit einer PHP-Entscheidung Struktur, wo, wenn eine Bedingung wahr war, sollte es ein div drucken.Aber eigentlich druckte es nicht, ich meine, es druckte nicht das öffnende Tag 'div', nur das schließende Tag 'div'. –

+0

Chrome und Firefox ignorieren dieses "ungeöffnete" div und deshalb konnte ich den Fehler nicht sehen. –

1

Folgendes überprüfen:

  1. ist enthalten jQuery, wenn dieser Code ausgeführt wird? (Ich würde eine Warnung auf $ machen und sehen, was Sie bekommen)
  2. Stellen Sie sicher, dass das deviceProfileSection Element existiert.
1

Ich hatte ein ähnliches Problem auf diese, bevor sie mit IE8, wenn es das gleiche Problem ist, kann es nicht die jQuery-Bibliothek finden, überprüfen Sie Ihren Weg oder testen Sie es mit einem CDN

+0

Nein, sicherlich ist es bereits enthalten. Ich kann normalerweise andere Elemente verwenden. –

1

habe ich versucht, den folgenden Code in IE8, und es funktioniert genauso wie erwartet. Wie in anderen Antworten vorgeschlagen, habe ich die neueste Version von JQuery verwendet, die mit IE8 aus dem JQuery CDN kompatibel ist. Verwenden Sie nicht 2.x - es funktioniert nicht mit älteren Browsern. Stellen Sie außerdem sicher, dass sich der Change-Ereigniscode in einem document.ready-Handler befindet.

<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>