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