IE 8: Objekt erwartet bei onChange bzw onLoad

WiZdooM

Erfahrenes Mitglied
Hallo

Ich bin etwas überfordert mit dem Fehler "Objekt erwartet" bzw. dessen Behebung. Es sind eigentlich recht simple Funktionen aber ich habe wohl irgendwie die Syntax nicht korrekt umgesetzt (sonst würde der Fehler ja nicht kommen)

Ich fange mal mit dem onChange-"Objekt erwartet" an. Ich habe zwei <select> Felder, von denen eines standartmäßig über CSS ausgeblendet ist und bei entsprechender Auswahl im anderen Feld durch die JS methode "checkGetriebeArt()", eingeblendet und befüllt wird.

Code:
<script language='javascript' type='text/javascript'>
function checkGetriebeArt(){
                var combobox = document.getElementById("Getriebegang");
                if(document.getElementById("Getriebeart").value=="Schaltgetriebe"){
                    combobox.options.length = 0;
                      combobox.style.visibility="visible";
                    combobox.options[1] = new Option("3-Gang","3-Gang",false);
                    combobox.options[2] = new Option("4-Gang","4-Gang",false);
                    combobox.options[3] = new Option("5-Gang","5-Gang",false);
                    combobox.options[4] = new Option("6-Gang","6-Gang",false);
                }
                else if(document.getElementById("Getriebeart").value=="Automatik"){
                    combobox.options.length = 0;
                    combobox.style.visibility="visible";
                    combobox.options[1] = new Option("4-Gang","4-Gang",false);
                    combobox.options[2] = new Option("5-Gang","5-Gang",false);
                    combobox.options[3] = new Option("6-Gang","6-Gang",false);
                    combobox.options[4] = new Option("Tip-Tronic","Tip-Tronic",false);
                }
                else{
                    combobox.options.length = 0;
                    combobox.style.visibility="hidden";
                }
            }
</script>

HTML:
<select name="Getriebeart" id="Getriebeart" class="input" style="width: 105px" onchange="checkGetriebeArt();">    
                <option selected="selected"></option>
                <option value="Schaltgetriebe">Schaltgetriebe</option>
                <option value="Automatik">Automatik</option>
                <option value="Multitronik">Multitronik</option>                </select>
<select name="Getriebegang" id="Getriebegang" style="width:105px; visibility:hidden"><option value=""></option>

Der IE8 Debugger springt mir in die onchange-Funktion und markiert den Funktionsaufruf mit dem Fehler, dass ein Objekt erwartet wird. Was meint der mit "Objekt" ?

Das gleiche passiert im onload-Statement, was nach einem Neuladen der Seite aufgrund fehlender Angaben ausgeführt wird und entsprechend das Feld "Getriebegang" (sofern nicht Multitronik) wieder einblenden soll.
<body onload="checkGetriebeArt();">

Was mache ich hier falsch, außer vielleicht das zweite Feld über JS mit Optionen zu belegen und Felder ein und ausblenden zu wollen...
Ist hier der Funktionsaufruf falsch? Oder sind die Funktionen falsch? Ich finde es ärgerlich, dass das im FF immer funktioniert aber der IE sich anstellt wie die Heilige Jungfrau... Oder bin ich nur zu unwissend für das Ganze (kann ja auch sein ;) )
 
Hi,

mein IE8 erwartet da nichts, alles funktioniert da ohne Fehlermeldung, sowohl bei onload als auch bei onchange.
 
Hmm liegt das möglicherweise an den Standard-Sicherheitseinstellungen vom IE, dass er "Fehler auf der Seite" findet ?
 
Ich glaube der Fehler ist Folgender:

Das dokument läd, interpretiert den JS-Teil und stellt fest, dass noch kein Objekt vorhanden ist (da der JS-Part oberhalb vom HTML-Part steht). Demzufolge ist das Objekt null. Allem anschein nach wird das Dokument prozedural von oben nach unten durchgeparsed. Schreibe ich einen JS-Funktionsaufruf nach dem Objekt selbst, funktioniert es.
 
Hallo,

ist zwar schon ein paar Tage her, aber vielleicht tut sich ja doch noch etwas. Ich stehe nämlich vor dem gleichen Problem (versuche, via body onload="asdf();" CSS zu beeinflussen) und frage mich, wie ich das Problem lösen kann.
Ich verstehe auch das letzte Post nicht wirklich, ehrlich gesagt. Was ist in dem Fall das Objekt? Und wo muss ich das Script einbinden, um im HTML-Source auf die darin enthaltenen Funktionen zugreifen zu können? Eingebunden habe ich das Script bereits sowohl vor als auch nach dem <body>-Tag. Hmm, mir fällt gerade auf, dass die IE-Debuginfos nicht gerade aussagekräftig sind. ^^

Vielen Dank schonmal! :)

Meine Wenigkeit nochmal. Auch wenn das Problem hier offensichtlich woanders lag als bei mir, möchte ich meine Lösung doch kurz schreiben. Vielleicht liest das ja mal jemand, der das gleiche Problem hat.

Ich hatte den MIME Type verrafft. Statt
Code:
<script language='javascript' type='text/javascript'>
hatte ich
Code:
<script src="scripts/toggle.js" language="javascript" type="application/javascript">
im Quellcode stehen. Ich meine, vor längerer Zeit mal in einer c't gelesen zu haben, dass die Eigenschaft "type" vom Scriptobjekt statt "text/javascript" auf "application/javascript" geändert werden sollte. Da ich mit JS nur wenig zu tun habe, habe ich mir in den seltenen Anwendungsfällen bereits angewöhnt, "application/javascript" anzugeben. Dass das Probleme gibt, ist mir allerdings erst jetzt aufgefallen, wo es wichtig ist, dass eine Seite browserübergreifend funktioniert, hehe.

Thanks anyway!
snatzratzne ]:
 
Zurück