Struppi: JavaScripte...was mache ich falsch?!?

Beitrag lesen

eval ist evil!
Es ist überflüssig langsam und es erschwert die Fehlersuche.

Aber warum, kannst du nicht eklären, oder!?

Weil es langsam ist - überflüssig (Ich hab dir eine funktionierendes Beispiel gezeigt) - und die Fehlersuche erschwert.

Ok, du willst Wissen warum:

1. langsam

eval heißt, das ein String während das Skript schon läuft übersetzt wird . Der String ist quasi ein Skript im skript, d.h. jedesmal muss der Parser (Übersetzter) bemüht werden.

2. Überflüssig

In 99,9999% der Fälle ist eval einfach unnötig, das es auch konventionell ginge ohne die Nachteile.

3. Fehlersuche

Wenn in deinem String ein JS-Fehler ist zeigt die Konsole nicht den Ort und Grund des Fehlers an sondern (soweit ich weiß) einen Fehler in Zeile null oder eins, da das Skript ja im String (der nur eine Zeile hat) gestartet wurde, d.h. du findest Fehler nur durch raten.

Dir ist klar das ohne JS nichts auf deiner Seite geht?

Auch wenn es blöde klingt, nein ich weiß es nicht, aber ich kenne auch niemanden, der kein Java drauf hat.

Windows XP hat kein Java, aber du meinst Javascript, wer mit dem IE mit eingeschaltetem JS (ohne Filter) im Internet surft setzt seine Rechner erheblichen Risiken aus. Nach wie vor gibt es ungeschlossenen Lücken die es erlauben beliebigen Code auf deinen Rechner auszuführen.

Das zweite Skript nutze ich zum wechseln von Grafiken in der Navigation:

In der Regel läßt sich sowas eleganter mit CSS lösen. ein paar Beispiele: http://css.maxdesign.com.au/index.htm

Also ich arbeite seit anfang Mai mit HTML und seit ein paar Tagen mit Java, da kannste nicht wirklich erwarten, dass ich gleich auch noch mit CSS anfange, oder?

HTML/CSS ist ein Team. JS ist ein zusätzliches, manchmal nützliches, Gimmick. Das lediglich für spezielle Anwendungen Verwendung (siehe oben) finden sollte. Wenn deine Navigation von JS abhängt ist sie für eine Reihe von Besuchern, Browsern nihct mehr Zugänglich. Fals es deine reine private Seite ist, ist diese Einschränkung aber auf jeden Fall in deinem eigenen ermessen.

<BODY>
<A href="test1.html" target="Hauptframe" onMouseOver="changeIt('img1','1.gif');
return bar(' ')" onMouseOut="changeIt('img1','11.gif');
return bar(' ')">

Der Teil nach onmouseover muss in einer Zeile stehen. innerhalb HTML attribute sind mehrzeilige Skript nicht möglich.

Komisch, warum funzt es dann bei mir so?

Komisch, du hast recht. Da hat sich was geändert. Sowohl Mozilla als auch der IE führen das Skript aus.

Dann tut's mir leid, ich hab mich geirrt.

Struppi.