Rolf B: Javascript "switch/case" Problem

Beitrag lesen

Hallo akuep,

ich denke, der von Jürgen verlinkte Wiki-Artikel sollte Dir helfen, dein Entscheidungsproblem zu lösen.

Allerdings...

Der erste "case" funktioniert, die weiteren nicht mehr.

Erzähle bitte keine Märchen. Der erste Case funktioniert auch nicht.

   parseFloat(form1.elements.value01.value) = wert1;

ist ein Fehler (in der Browserkonsole siehst Du die Meldung, dass ein ReferenceError nicht "gefangen" worden sei). Ich denke, du hast einfach blindlings das Auslesen der Werte aus den input-Elementen irgendwoher kopiert, ohne es zu verstehen.

form1.elements.value01
ist das input-Element mit name="value01" im Form form1.
form1.elements.value01.value
ist der Inhalt der value-Eigenschaft dieses Elements, in Form einer Zeichenkette. Dieser Eigenschaft kann man auch etwas zuweisen.
parseFloat(...)
ist der Aufruf der Funktion parseFloat. Sie wandelt eine Zeichenkette nach bestem Können in eine Zahl um. An das Ergebnis eines Funktionsaufrufs kann man aber nichts zuweisen.

Was funktioniert, ist:

form1.elements.value01.value = input_value * faktor;

Jedenfalls so halbwegs. Hier müsste eigentlich eine brauchbare Rundung erfolgen. Was "brauchbar" ist, hängt auch von den Umrechnungsfaktoren ab. Wenn ich mit 0.00004403 multipliziere, sind vermutlich 8 Nachkommastellen signifikant. Natürlich ist die Frage, ob es sinnvoll ist, Millimeter in Meilen umzurechnen oder sowas… Einfaches Runden geht mit toFixed:

form1.elements.value01.value = (input_value * faktor).toFixed(8);

rundet auf 8 Nachkommastellen, bzw. füllt mit Nullen auf 8 Stellen auf.

Im Übrigen würde ich Dir empfehlen, auf den case zu verzichten und ein Array mit Umrechnungsfaktoren zu verwenden. Was ich Dir aber, damit Du es verstehst, 1:1 vorkauen müsste und damit dein Abschreibebegehren erfüllen würde. Nö. Tu ich nicht.

Rolf

--
sumpsi - posui - obstruxi