nicht aufgerufener Code verursacht Fehler
Latze Bierknecht
- javascript
0 Felix Riesterer0 Latze Bierknecht
Salve,
ich habe eine JavScript-Datei, die in alle meine HTML-Dateien eingebunden wird. Nun verhalten die sich nicht alle gleich, es gibt da durchaus JavaScript-Funktionen, die nur von einer Seite benutzt werden. Darin wird per document.getElementById auf ein Element Bezug genommen, das es nur in dieser einen Seite gibt.
Nun liefert mir der Explorer aber eine Fehlermeldung, die mir eine Vermutung nahelegt, für die ich um Bestätigunh bitte. Kann es sein, daß der Explorer den Code komplett kompiliert (und dabei entdeckt, daß es die angegebene ID nicht gibt)? Wenn man die Seite aktualisiert nachlädt, ist der Fehler weg. Und Firefox meckert nicht.
Sollte ich die paar Funktionen auslagern?
Lieber Latze,
Nun liefert mir der Explorer aber eine Fehlermeldung, die mir eine Vermutung nahelegt, für die ich um Bestätigunh bitte.
wie lautet diese Fehlermeldung? Wo kann man sich das einmal ansehen?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Lieber Latze,
Nun liefert mir der Explorer aber eine Fehlermeldung, die mir eine Vermutung nahelegt, für die ich um Bestätigunh bitte.
wie lautet diese Fehlermeldung? Wo kann man sich das einmal ansehen?
Tja, die Seite ist zwar schon online zwecks Testen, aber noch versteckt, sprich nicht verlinkt, so daß sogar Google sie noch nicht gefunden hat. Deshalb möchte ich sie erst veröffentlichen, wenn sie fertig ist. So lange muß es die alte tun.
Der Fehler lautet
Zeile 681
Zeichen 3
Fehler Ungültiges Argument
Code 0
Da es nur eine Datei mit so vielen Zeilen gibt, glaube ich, daß der Fehler in dieser Zeile (Zeile 680) liegt:
document.getElementById("untermMenu").style.height = (Hoehe - 297 - document.getElementById("untermMenu").offsetTop) + "px";
(In Zeile 681 steht nur }, in Zeile 682 steht nur else.)
Die ID untermMenu gibt es in dieser Seite nicht.
hi,
document.getElementById("untermMenu").style.height = (Hoehe - 297 - document.getElementById("untermMenu").offsetTop) + "px";
(In Zeile 681 steht nur }, in Zeile 682 steht nur else.)Die ID untermMenu gibt es in dieser Seite nicht.
Sollte doch logisch sein, dass der Versuch des Zugriffs auf Eigenschaften eines Objektes, welches mangels Existenz gar nicht ermittelt werden kann, einen Fehler darstellt.
gruß,
wahsaga
Ups, ich hätte dazusagen sollen, daß die Funktion, in der dieser Code steht, auf dieser Seite gar nicht aufgerufen wird.
Ups, ich hätte dazusagen sollen, daß die Funktion, in der dieser Code steht, auf dieser Seite gar nicht aufgerufen wird.
Das sagst du.
Die Fehlermeldung sagt etwas anderes.
Yerf!
Das sagst du.
Die Fehlermeldung sagt etwas anderes.
Hm, sicher? War "Ungültiges Argument" nicht auch so ein Fall wie ein Syntax Error, der schon beim Einlesen des JS-Codes generiert wird?
An den OP: poste doch mal noch etwas mehr Code um die fragliche Stelle herum.
Gruß,
Harlequin
Hm, sicher? War "Ungültiges Argument" nicht auch so ein Fall wie ein Syntax Error, der schon beim Einlesen des JS-Codes generiert wird?
ich würde eher auf ein ungültiges Argument tippen. Namlich ein NaN oder sowas.
An den OP: poste doch mal noch etwas mehr Code um die fragliche Stelle herum.
... ansonsten kommen wir hier nicht weiter.
Struppi.
Mea culpa. Ich muß mich bei euch entschuldigen. Anscheinend kenne ich meinen Code nicht so sehr, wie ich dachte.
Es gibt den Identifier untermMenu auf jeder Seite und obiger Code wird auf jeder Seite aufgerufen.
Nachdem ich den Code auf mehrere Dateien verteilt habe (damit nicht jede Datei an alle Funktionen drankommt), lautet der Fehler nun:
Zeile 489
Zeichen 3
Fehler Ungültiges Argument
Code 0
In meiner JavaScript-Datei steht (von Zeile 485 bis 493):
var untermMenue = document.getElementById("untermMenu");
if (untermMenue)
{
untermMenue.style.height = (Hoehe - 297 - untermMenue.offsetTop) + "px";
} // das hier ist Zeile 489
else
{
alert("untermMenu gibt es nicht");
}
In meiner HTML-Datei steht:
<div id="untermMenu" style="background-color:#FFFFFF" onmousemove="allesunsichtbar(null, 0)">
</div>
Der Code ist dazu da, unter einem Menue, das sich auf der linken Seite befindet, einen unsichtbaren Bereich einzurichten, der einerseits eine Funktion (allesunsichtbar) enthält, die das Menü wieder einklappt, und andererseits etwa so groß ist, das der Bildschirm einigermaßen gut ausgefüllt wird (denn ein breiter weißer Streifen unten drunter sieht blöd aus).
In meiner JavaScript-Datei steht (von Zeile 485 bis 493):
var untermMenue = document.getElementById("untermMenu");
if (untermMenue)
{
Mach hier mal einen test hin:
alert(
'Style: ' + untermMenue.style
'\nheight: ' + (Hoehe - 297 - untermMenue.offsetTop)
);
Struppi.
folgende Ausgabe:
Style: [object]
height: -144
(oder auch height: 44, height: 73 o.ä.)
folgende Ausgabe:
Style: [object]
height: -144(oder auch height: 44, height: 73 o.ä.)
Dann ist der Fehler nicht in der Zeile.
Struppi.
hi,
folgende Ausgabe:
Style: [object]
height: -144(oder auch height: 44, height: 73 o.ä.)
Dann ist der Fehler nicht in der Zeile.
Jein.
Eine Höhe von -144 zuzuweisen mag man sich als Browser schon weigern, selbst wenn noch eine Einheit wie "px" hintendrangehängt wird.
gruß,
wahsaga
Eine Höhe von -144 zuzuweisen mag man sich als Browser schon weigern, selbst wenn noch eine Einheit wie "px" hintendrangehängt wird.
Es scheint tatsächlich genau das zu sein. Auf den Seiten, auf denen ein positiver Wert angegeben wird, erscheint kein Fehler. Auf der Seite mit dem Wert -144 kommt der Fehler erst nach dem Klick auf OK.
Ich werde also einen kleinen Test auf >0 einfügen.
Danke für eure Hilfe, ich bleib dran.
Moin
Da es nur eine Datei mit so vielen Zeilen gibt, glaube ich, daß der Fehler in dieser Zeile (Zeile 680) liegt:
document.getElementById("untermMenu").style.height = (Hoehe - 297 - document.getElementById("untermMenu").offsetTop) + "px";
(In Zeile 681 steht nur }, in Zeile 682 steht nur else.)Die ID untermMenu gibt es in dieser Seite nicht.
da ich auch einen Haufen Funktionen in einer Datei habe und auf den verschiedenen Seiten wahlweise ausführen lasse, kann ich dir versichern, dass der IE nicht einfach alles ausführt.
Nur die Funktionen die du explizit startest werden ausgeführt.
Alerdings wird trotzdem jedesmal gefragt ob es das Element gibt, das zunächst bearbeitet wird, bei deinem code etwa:
var untermenue=document.getElementById("untermMenu");
if (untermenue) untermenue.style.height = (Hoehe - 297 - untermenue.offsetTop) + "px";
(+ ggf. noch ein Abbruch der Funktion mit return)
Aber auch dies ist jetzt eher spekulativ ohne dein Script zu kennen!
Gruß
rfb
Nur die Funktionen die du explizit startest werden ausgeführt.
Alerdings wird trotzdem jedesmal gefragt ob es das Element gibt, das zunächst bearbeitet wird
Ja aber doch nur, wenn der Code auch wirklich ausgeführt wird. In meinem Fall wird dieser Code gar nicht aufgerufen.
Ich habe deine Idee mit der Hilfsvariable und ihrer Prüfung auf null ausprobiert, leider ohne den gewünschten Erfolg.