fehler in switch()
Markus
- javascript
Hallo Forum!
Ich habe eine Funktion, die anhand eines übergebenen Values eine Fallunterscheidung machen soll.
Leider funktioniert das nicht so, wie ich möchte :-(
function addsmilie(variable)
{
alert(variable);
switch(variable)
{
case "1": variable = "a"; break;
case "2": variable = "b"; break;
case "3": variable = "c"; break;
case "4": variable = "d"; break;
case "6": variable = "e"; break;
}
alert(variable);
}
Ergebnis (ie6b2): einmal die Ausgabe der Variable (z.b. 1) und dann noch einmal (statt "a"), d.h. die switch-Funktion arbeitet irgendwie nicht so wie ich das möchte :-(
Sieht jemand den/einen Fehler?
Danke!
Markus
function addsmilie(variable)
{
alert(variable);
switch(variable)
{
case "1": variable = "a"; break;
case "2": variable = "b"; break;
case "3": variable = "c"; break;
case "4": variable = "d"; break;
case "6": variable = "e"; break;
}
alert(variable);
}
Lass einfach das Hochkomma bei case "1" (richtig case 1:) weg!
lg webmonk
Hi
case "6": variable = "e"; break;
}
alert(variable);
}
Lass einfach das Hochkomma bei case "1" (richtig case 1:) weg!
Das gibt Ärger! >> "...unverträgliche Datentypen..." Oder so ähnlich.
Ist ja immer exact die eine Variable, die da geändert wird. Gut, man könnte davon ausgehen, das dies nicht beabsichtigt ist...
lg webmonk
Lass einfach das Hochkomma bei case "1" (richtig case 1:) weg!
Das gibt Ärger! >> "...unverträgliche Datentypen..." Oder so ähnlich.
Ist ja immer exact die eine Variable, die da geändert wird. Gut, man könnte davon ausgehen, das dies nicht beabsichtigt ist...
sorry, bin davon ausgegangen, dass dieser funktion nur Zahlenwerte übergeben werden, denn dann funkts 100%
lg webmonk
Hallo Forum!
Hallo Du!
Ich habe eine Funktion, die anhand eines übergebenen Values eine Fallunterscheidung machen soll.
Leider funktioniert das nicht so, wie ich möchte :-(
function addsmilie(variable)
{
alert(variable);
switch(variable)
{
case "1": variable = "a"; break;
case "2": variable = "b"; break;
case "3": variable = "c"; break;
case "4": variable = "d"; break;
case "6": variable = "e"; break;
}
alert(variable);
}
ich hab das mal wie folgt getestet:
<script language="JavaScript" type="text/javascript">
function addsmilie(variable)
{
alert(variable);
switch(variable)
{
case "1": variable = "a"; break;
case "2": variable = "b"; break;
case "3": variable = "c"; break;
case "4": variable = "d"; break;
case "6": variable = "e"; break;
}
alert(variable);
}
addsmilie("1");
addsmilie("2");
addsmilie("3");
addsmilie("4");
addsmilie("6");
</script>
Ergebnis (ie6b2): einmal die Ausgabe der Variable (z.b. 1) und dann noch einmal (statt "a"), d.h. die switch-Funktion arbeitet irgendwie nicht so wie ich das möchte :-(
IE5.5 Macht genau das, was ich erwartet habe:
gibt mir 1 aus, dann ein a
gibt mir 2 aus, dann ein b
gibt mir 3 aus, dann ein c
gibt mir 4 aus, dann ein d
gibt mir 6 aus, dann ein e
Abgesehen davon, das ich nicht verstehe, wieso Du die 5 überspringst, tut das also genau das, was da steht...
Du übergibst eine Variable in die function.
Gibst diese per alert aus.
wenn diese "1" ist änderst Du sie auf "a"
wenn diese "2" ist änderst Du sie auf "b"
wenn diese "3" ist änderst Du sie auf "c"
...
und gibst diese dann erneut aus...
ist klar das dann das angezeigt wird, was Du da geändert hast.
Da ich nicht weis, was Du mit diesem so für sich alleinstehenden Code erreichen willst, kann ich da nicht viel dran tun außer evtl.
...
case "1": alert(variable);
break;
...
Das gibt Dir dann die "1" 2 * aus. Aber Sinvoll ist das nicht! Kannst dann gleich schreiben
...
alert(variable);
alert(variable);
...
Ist dann dasselbe... Switch ist also dann erstmal überflüssig! (Wenn da sonst nichts mit passieren soll)
Sieht jemand den/einen Fehler?
Danke!
Markus
Hallo!
Danke für den Tip, es lag an beidem... an dem was Du geschrieben hast und an dem was webmonk geschrieben hat.
Problem war folgendes:
Ich habe die Funktion mittels addsmilie(1) aufgerufen, hatte bei dem switch aber 'case "1"' gehabt. Dadurch war Javascript der Überzeugung das stimmt nicht überein (Bin in der Hinsicht wohl etwas von PHP verwöhnt)...
Danke für Eure Hilfe!
Markus
Hi!
Problem war folgendes:
Ich habe die Funktion mittels addsmilie(1) aufgerufen, hatte bei dem switch aber 'case "1"' gehabt. Dadurch war Javascript der Überzeugung das stimmt nicht überein (Bin in der Hinsicht wohl etwas von PHP verwöhnt)...
Bei switch handelt es sich lediglich um so eine Art Sprungtabelle. Das was hinter case steht, wird nicht als richtige Werte angesehen, die dann mit == verglichen werden, sondern als Labels. Man koennte sich das pseudocodemaessig also ungefaehr so vorstellen:
goto variable;
"1": variable = "a"; goto behind;
"2": variable = "b"; goto behind;
"3": variable = "c"; goto behind;
usw.
behind: // ende von switch
(Das goto behind entspricht dabei dem break.)
Dabei findet dann eben keine automatische Typkonvertierung statt.
So long