ich: fehler in switch()

Beitrag lesen

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