Syntaxterror I
ZAB
- javascript
Hallo alle miteinander!
Ich habe ein kleines Script gebastelt,
welches in der Adresszeile des Browsers,
einen String ersetzt und die Seite dann neu läd.
Ansich ganz simple mögt ihr meinen, doch für
einen Nichtprogrammierer ein schwieriges Unterfangen.
Das Script tut seine Funktion, ist aber
wohl nicht ganz sauber geschrieben, denn der IE brint
ne Fehlermeldung und der Mozilla in der JS-Konsole auch.
Hier das Script:
a = window.location.href;
function color_a()
{
if (a.indexOf('c2')!=-1)
{
a = a.replace(/c2/,"c1");
window.location.href = a;
}
else if (a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}
Es wird ein Syntaxterror angezeigt! Ich denke es hat wohl mit
schweiften Klammern zu tun, ich weiß aber nicht wieso!
Ich bitte um Hilfe!
Gruß
Sebastian
Hallo,
Es wird ein Syntaxterror angezeigt!
geht das evtl. genauer?
Gruss,
Kube
Hallo,
Es wird ein Syntaxterror angezeigt!
geht das evtl. genauer?Gruss,
Kube
Hallo Alle,
ich werde es nächtes mal genauer beschreiben!!!
Vielen Dank für die Hinweise. Ich habe als erstes ausprobiert, einfach
else {} als leere Anweisung zu schreiben und das war es auch! Jetzt läuft der Kram auch ohne Fehlermeldung - supi!
<script type="text/javascript" language="javascript">
<!--
a = window.location.href;
function color_a()
{
if (a.indexOf('c2')!=-1)
{
a = a.replace(/c2/,"c1");
window.location.href = a;
}
else {}
(a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}
//-->
</script>
So sieht es jetzt aus. Ist doch schon übersichtlicher - oder?
Kann mir jemand vielleicht erklären, wieso es eine leere else {}
Anweisung sein muss und es mit else if (...) nicht klappt.
Schon mal vielen Dank für eure Aufmerksamkeit!
Gruß ZAB
Das Script tut seine Funktion, ist aber
wohl nicht ganz sauber geschrieben, denn der IE brint
ne Fehlermeldung und der Mozilla in der JS-Konsole auch.
a = window.location.href;
function color_a()
{
if (a.indexOf('c2')!=-1)
{
a = a.replace(/c2/,"c1");
window.location.href = a;
}
else
if (a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}Es wird ein Syntaxterror angezeigt! Ich denke es hat wohl mit
schweiften Klammern zu tun, ich weiß aber nicht wieso!
Bring doch etwas Struktur in Deine Programme, sie lassen sich dann wesentlich besser lesen. Weiterhin wird nicht nur ein Syntax-Fehler angezeigt, sondern normalerweise auch die Zeile oder Zeilennummer, in der der Fehler auftritt - ohne diese Info aber bleibt Außenstehenden nur eine mehr oder weniger mühselige Raterei.
Ich für meinen Teil würde mal raten, daß da in der Tat zwei Klammernpaare fehlen, und zwar in den drei Zeilen nach dem 'else'.
Gruß,
soenk.e
Hallo,
else
if (a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}
Ich für meinen Teil würde mal raten, daß da in der Tat zwei Klammernpaare fehlen, und zwar in den drei Zeilen nach dem 'else'.
Das führt aber nicht zu einem Syntax Error. Ich vermute das es "else if" in einer Zeile heißen muss. Oder else {} als leere Anweisung und dann ein neues if.
Gruß,
ueps
else
if (a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}Ich für meinen Teil würde mal raten, daß da in der Tat zwei Klammernpaare fehlen, und zwar in den drei Zeilen nach dem 'else'.
Das führt aber nicht zu einem Syntax Error. Ich vermute das es "else if" in einer Zeile heißen muss. Oder else {} als leere Anweisung und dann ein neues if.
Damit begebe ich mich zwar auf's Glatteis, weil ich es nicht ausprobiert habe, aber ich meine mich zu erinnern, daß eine if-Klausel, die in einem Zweig mit Klammern arbeitet auch in allen anderen Zweigen mit Klammern arbeiten muß. Das hat er nicht gemacht, daher die Fehlermeldung.
Das es "else if" in einer Zeile heißen muß, halte ich für äußerst unwahrscheinlich, da Javascript keinen Unterschied zwischen Leerzeichen und leeren Zeichen (wie Zeilenumbrüchen und Tabulatoren) macht. Und außerdem hatte er das schon so, die Zwei-Zeilen-Umstellung oben habe ich verbrochen.
else {} und dann if kann es nicht sein, weil dann das else überflüssig wäre.
Gruß,
soenk.e
Moin Moin !
Damit begebe ich mich zwar auf's Glatteis, weil ich es nicht ausprobiert habe, aber ich meine mich zu erinnern, daß eine if-Klausel, die in einem Zweig mit Klammern arbeitet auch in allen anderen Zweigen mit Klammern arbeiten muß.
Waaah! Darauf möchte ich mich nie verlassen müssen. Es ist wesentlich einfacher, die paar Anschläge für die beiden Klammern *IMMER* zu machen, dann muß man nicht über Ausnahmen nachdenken und der Code bleibt wartbar, wenn man noch ein Statement zwischen if und else einfügen muß.
Alexander
Hallo,
ich habe jetzt zwar zweimal fast dasselbe geschrieben,
aber ich bin mir nicht ganz sicher, ob ihr die Antwort auf den Beitrag auch lest. Ich möchte mich bedanken, denn das Problem ist gelöst.
Ich habe als erstes ausprobiert, einfach
else {} als leere Anweisung zu schreiben und das war es auch! Jetzt läuft der Kram auch ohne Fehlermeldung - supi!
<script type="text/javascript" language="javascript">
<!--
a = window.location.href;
function color_a()
{
if (a.indexOf('c2')!=-1)
{
a = a.replace(/c2/,"c1");
window.location.href = a;
}
else {}
(a.indexOf("c3")!=-1)
a = a.replace(/c3/,"c1");
window.location.href = a;
}
//-->
</script>
So sieht der Code jetzt aus.
Wenn Ihr daran interessiert seid, das Script mal in Aktion zu sehen
(wesentlich spannender als der Code), dann sagt bescheid, ich poste die URL hier im Forum.
Noch mal vielen Danke für Eure Aufmerksamkeit!
Gruß
ZAB
ich habe jetzt zwar zweimal fast dasselbe geschrieben,
aber ich bin mir nicht ganz sicher, ob ihr die Antwort auf den Beitrag auch lest. Ich möchte mich bedanken, denn das Problem ist gelöst.
Nein, zumindest nicht mit dem Skript, daß Du unten zitiert hast.
Ich habe als erstes ausprobiert, einfach
else {} als leere Anweisung zu schreiben und das war es auch! Jetzt läuft der Kram auch ohne Fehlermeldung - supi!
Es läuft jetzt zwar ohne Fehlermeldung, aber es ist nicht das, was Du haben wolltest. Du hast jetzt zwar einen leeren else-Block, aber der hat nicht das Problem gelöst, sondern die beiden Klammern im else-Block. Hättest Du die Klammern um die Anweisungen geschrieben, die er bei else ausführen soll, wäre die Fehlermeldung sicherlich auch verschwunden.
Was Du jetzt machst, ist in mehreren Teilen unsinnig. Erstens kannst Du statt einem leeren, nichts tuenden else das else auch gleich weglassen, zweitens hast Du in Zeile 11 eine Anweisung, die überhaupt keine Funktion hat. Du vergleichst dort das Ergebnis von indexOf() mit -1, lässt aber das Ergebnis dieses Vergleichs einfach im Nirvana verschwinden; keine Zuweisung an eine Variable, kein if, das es benutzt.
Führe Dir das Skript besser nochmal genau zu Gemüte, um überhaupt zu verstehen, was dort passiert.
1 a = window.location.href;
2 function color_a()
3 {
4 if (a.indexOf('c2')!=-1)
5 {
6 a = a.replace(/c2/,"c1");
7 window.location.href = a;
8 }
9 else
10 {};
11 (a.indexOf("c3")!=-1)
12 a = a.replace(/c3/,"c1");
13 window.location.href = a;
14 }
Um die Geschichte mal etwas abzukürzen: Du möchtest in window.location.href c2 und/oder c3 durch c1 ersetzen.
window.location.href = window.location.href.replace(/c2|c3/g,"c1");
In der Kürze liegt die Würze :)
Gruß,
soenk.e