"Ungültiges Argument" bei IE
RobOter
- javascript
Hallo Forum,
ich steh grad auf dem Schlauch.
Folgender Code funktioniert nicht im IE:
function change_position() {
var width = window.innerWidth;
var leftpos = parseInt(width/2 - 330);
if (document.getElementById) {
//Die folgende Zeile erzeugt "Ungültiges Argument" Fehlermeldung
document.getElementById('logo').style.left = leftpos+'px';
document.getElementById('nav').style.left = leftpos+'px';
document.getElementById('spacer').style.left = leftpos+'px';
document.getElementById('content').style.left = leftpos+'px';
document.getElementById('footer').style.left = leftpos+'px';
} else {
document.all['logo'].style.left = leftpos+'px';
document.all['nav'].style.left = leftpos+'px';
document.all['spacer'].style.left = leftpos+'px';
document.all['content'].style.left = leftpos+'px';
document.all['footer'].style.left = leftpos+'px';
}
}
SeaMonkey/Firefox macht was ich will.
Kann mir jemand helfen?
Vielen Dank
if (document.getElementById) {
//Die folgende Zeile erzeugt "Ungültiges Argument" Fehlermeldung
document.getElementById('logo').style.left = leftpos+'px';
hast du dir mal anzeigen lassen, was in leftpos steht?
SeaMonkey/Firefox macht was ich will.
auch die Fehlerkonsole ist leer?
Struppi.
Hi,
var width = window.innerWidth;
Kann mir jemand helfen?
RTFM: http://de.selfhtml.org/javascript/objekte/window.htm#inner_width
MfG ChrisB
RTFM: http://de.selfhtml.org/javascript/objekte/window.htm#inner_width
Hi Chris,
Danke sehr. Hab den Fehler die ganze Zeit über an der falschen Stelle gesucht :) Merkwürdig, dass der IE diese Zeile kommentarlos schluckt.
grüsse
Hab den Fehler die ganze Zeit über an der falschen Stelle gesucht :) Merkwürdig, dass der IE diese Zeile kommentarlos schluckt.
Nein, das ist ganz normal - das ist JavaScript. Er muss diese Zeile kommentarlos schlucken.
Wenn du objekt.eigenschaft notierst und das Objekt hat keine so benannte Eigenschaft - dann ergibt dieser Ausdruck einfach undefined.
Und den Wert undefined weist du dann deiner Variable zu:
var width = window.innerWidth;
Mit undefined arbeitest du dann weiter:
var leftpos = parseInt(width/2 - 330);
undefind / 2 ergibt NaN (Not a Number).
NaN - 300 ergibt NaN.
partseInt(NaN) ergibt NaN.
leftpos bekommt den Wert NaN.
Bis hier hin wurden noch keine Fehlermeldungen (Exceptions) erzeugt.
Erst sobald du lefpos nutzt und stillschweigend davon ausgehst, es sei ein gültiger Zahlwert, dann kracht es:
document.getElementById('logo').style.left = leftpos+'px';
wird zu
document.getElementById('logo').style.left = 'NaNpx';
Und NaNpx ist eben kein gültiger Wert für die left-Eigenschaft. Hier kommt dann erst die Exception, das ist in W3C DOM 2 Style so festgelegt.
So funktioniet JavaScript - man sollte immer prüfen, ob die verwendeten Objekte zur Verfügung stehen und ob sie sinnvolle Werte liefern.
http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/
Mathias