Rolf B: Javascript "switch/case" Problem

Beitrag lesen

Hallo Loopie McLoop,

kann man so machen, ja. Ich persönlich hätte großzügig Anführungszeichen um die Attributwerte verteilt, aber das ist Formalkram.

Prinzipiell hatte ich das ja auch schon angeregt, aber diesen Kommentar dazu gesetzt:

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.

Lass mich kurz über deinen Vorschlag philosophieren…

Du hast für das Faktorenverzeichnis Objekte geschachtelt. Das dürfte eine bessere Ide sein als mein Array-Ansatz – ich würde dann aber konsequent sein und sowohl für die Unit-Auswahl wie auch für die Faktoren die entsprechenden Keys direkt verwenden und nicht zusammensetzen. Im abstrakten Beispiel ist unit-1 und out-4 okay, für einen realen Anwendungsfall könnte dann aber auch "metrisch" und "kilometer" angebracht sein.

Also (verkürzt auf die input-Elemente):

<script>
const factors = {
    'unit-1': {
        'out-1': 1.0,
        'out-2': 0.1,
        'out-3': 100,
        'out-4': 0.987,
        'out-5': 0.00004403,
        'out-6': 0.002097
    },
    ...
};
...
</script>
...
<input type="radio" name="unit" id="unit-1" value="unit-1" required checked>
<input type="radio" name="unit" id="unit-2" value="unit-2" required>
<input type="radio" name="unit" id="unit-3" value="unit-3" required>

Damit kann man direkt auf das richtige Faktorenobjekt zugreifen:

const factorSet = factors[document.convert.unit];

Ob document.convert oder event.currentTarget besser ist, ist wohl Geschmackssache. Die currentTarget-Variante ist flexibler, wenn man mehrere dieser Forms auf einer Seite hat, setzt aber auch voraus, dass man das im Submit-Event tut. Ich würde die Konvertierung vielleicht lieber im change-Event des Unit-Fieldset auslösen bzw. im input-Event des Wert-Eingabefeldes, damit die Umrechnung "live" erfolgt.

Rolf

--
sumpsi - posui - obstruxi