Was ist daran falsch?
David Hörpel
- javascript
Hi!
Kann mir aeiner sagen was hier onFocus='window.setTimeout('alert(this.value*5)',12000);' falsch ist? Ich bekomme immer die Fehlermeldung "Syntaxfehler"! Unten seht ihr den Kontext.
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>
Kleiner hinweis: Ich muss das alles in einfachen Anführungszeichen schreiben, da das mit document.write ausgegeben wird. Daran liegt es auch nicht.
Danke für die Hilfe!
David!
Hallo,
Kann mir aeiner sagen was hier onFocus='window.setTimeout('alert(this.value*5)',12000);' falsch ist? Ich bekomme immer die Fehlermeldung "Syntaxfehler"! Unten seht ihr den Kontext.
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>
Kleiner hinweis: Ich muss das alles in einfachen Anführungszeichen schreiben, da das mit document.write ausgegeben wird. Daran liegt es auch nicht.
Danke für die Hilfe!
Vielleicht: document.write("<input size="4" maxlength="4" value="1" name="text2" onFocus="window.setTimeout('alert(this.value*5)',12000);">
MfG Dmitri
Hallo David,
die Ausgabe des input tags hat bei onFocus eine Zeichenkette als Wert. In dieser Zeichenkette werden die selben Zeichen (das ' einfache Anführungszeichen) selber benutzt, obwohl es eigentlich die Zeichenkette limitieren soll.
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>
Dies darf nicht sein.
Du mußt die Zeichen innerhalt der Zeichenkette escapen.
Bsp.:
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>
Marc
Aloha!
Du mußt die Zeichen innerhalt der Zeichenkette escapen.
Richtiger Gedanke, falsche Ausführung.
So wird der Code im Javascript wohl drinstehen:
document.write("<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>");
Das erzeugt folgende Ausgabe:
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout('alert(this.value*5)',12000);'>
Die escapten einfachen Anführungszeichen kriegen die Backslashes weg und stehen wieder alleine da - und immer noch ist das Problem, dass sich die Anführungszeichen beißen.
Das Ausgabeergebnis muss so aussehen:
<input size="4" maxlength="4" value="1" name="text2" onFocus="window.setTimeout('alert(this.value*5)',12000);">
oder so:
<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout("alert(this.value*5)",12000);'>
Folglich kann man es auf diese Arten schreiben:
document.write("<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout("alert(this.value*5)",12000);'>");
document.write('<input size='4' maxlength='4' value='1' name='text2' onFocus='window.setTimeout("alert(this.value*5)",12000);'>');
document.write("<input size="4" maxlength="4" value="1" name="text2" onFocus="window.setTimeout('alert(this.value*5)',12000);">");
document.write('<input size="4" maxlength="4" value="1" name="text2" onFocus="window.setTimeout('alert(this.value*5)',12000);">');
...je nachdem, wieviel Aufwand man mit dem Escapen haben will...
Es empfiehlt sich übrigens, eine einheitliche Handhabung der Anführungsstriche zu haben. Ich benutze grundsätzlich doppelte Anführungszeichen zum Umschließen von HTML-Attributen und logischerweise dann einfache Anführungszeichen für Strings innerhalb von Javascript-Eventhandlern. Dadurch sehen die Javascript-Befehle weniger "buschig" aus, sind IMO klarer durchgehend zu lesen.
- Sven Rautenberg