Netscape + Switch + Case mit Variable = Crash?
Daniela Koller
- javascript
Hallo
Meine Frage, ist es bei einem Case nicht möglich einen dynamischen Wert anzugeben? Habe das ganze mit ein wenig mehr Inhalt mit IE probiert, dort klappt es tadellos. Einzige alternative sind verschachtelte if's, was jedoch nicht so schön und auch nicht so effizient ist.
<html>
<head>
<SCRIPT LANGUAGE="JavaScript1.2">
<!--
function test() {
var dummy;
var test;
switch (dummy) {
case test:
break;
default:
break;
}
}
// -->
</SCRIPT>
</head>
</html>
Danke für eine Erklärung wieso dies nicht funktioniert.
Daniela
Moin,
Hallo
Meine Frage, ist es bei einem Case nicht möglich einen dynamischen Wert anzugeben? Habe das ganze mit ein wenig mehr Inhalt mit IE probiert, dort klappt es tadellos. Einzige alternative sind verschachtelte if's, was jedoch nicht so schön und auch nicht so effizient ist.
<html>
<head>
<SCRIPT LANGUAGE="JavaScript1.2">
<!--
function test() {
var dummy;
var test;switch (dummy) {
case test:
das produziert bei mir auch einen Fehler. Meine Vermutung ist,
daß der Variablentyp von test (ob String oder Integer oder sonstwas)
an dieser Stelle noch zu unspezifiziert ist und die switch/case Anweisung
damit nicht umgehen kann.
Die Fehlermeldung kann man z.B. mit
case ""+test: ...
anscheinend abschalten. Probier mal, ob dieses Konstrukt
auch so funktioniert, wie Du es benötigst.
Achja - falls Du stattdessen Zahlen vergleichen willst:
case 0+test:
geht auch ohne Fehlermeldung...
Viele Grüße
Andreas
Moin nochmal,
case 0+test:
ist aus bekannten Gründen nicht ganz korrekt, da hier
u.U. auch wieder ein String herauskommen kann.
Um Strings auszuschließen, müßte aber
case test-0: ...
funktionieren, da '-' kein Stringoperator ist...
Viele Grüße
Andreas
case test-0: ...
Habs ausprobiert sowohl mit
case 0+test: als auch mit
case test-0: beides produziert nach wie vor den Absturz,
Was ich im ersten Post vergessen habe, das Konstrukt verursacht, wenn es nicht in die Function verpackt
ist einen Syntax-Fehler und keinen Absturz.
Der Syntax-Fehler ist mit dieser Änderung weg, der Absturz leider nicht.
Trotzdem vielen Dank für deine Hilfe
Gruss Daniela