switch case .... else if.... problem

  • Hallo....


    Ich habe eigentlich einen funktionierende Funktion (siehe unten) - welche mit else if gelöst wurde...


    Besteht die Möglichkeit, diese Funktion zu vereinfachen - ich selbst bekomme es mit switch case nicht zum Laufen...


    Ich möchte mir die mehrmalige Eingabe von: .... && (Klasse == "Herren") && (Wertung == "LM Steiermark")) { ..... ersparen


    // *********************************************

    // Altersklasse berechnen


    <script type="text/javascript">

    function AltersklasseBerechnen()


    {


    // Variable definieren

    var Alter = document.getElementById("Alter").value;

    var Altersklasse;

    var Klasse = document.getElementById("Klasse").value;

    var Wertung = document.getElementById("Wertung").value;

    // ------------------------------


    if (((Alter >0 && Alter <=29)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK";

    } else if (((Alter >=30 && Alter <40)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK 30";

    } else if (((Alter >=40 && Alter <50)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK 40";

    } else if (((Alter >=50 && Alter <60)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK 50";

    } else if (((Alter >=60 && Alter <70)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK 60";

    } else if (((Alter >=70 && Alter <99)) && (Klasse == "Herren") && (Wertung == "LM Steiermark")) {

    Altersklasse = "AK 70+";

    } document.getElementById("Altersklasse").value = Altersklasse;

    }

    </script>

    Herzlichen Dank für die Bemühungen....

  • Ich würde da logisch anders herangehen. Wenn Du immer die Bedingungen Klasse == 'Herren' und Wertung == 'LM Steiermark' hast, würde ich diese initial dazu verwenden, aus der Funktion rauszuspringen, wenn ein Wert false ergibt:

    JavaScript
    1. if ( Klasse != 'Herren' || Wertung != 'LM Steiermark')
    2. return false;

    Code, der danach kommt, wird nur dann verarbeitet, wenn beide Bedingungen wahr sind.

    In dem Fall benötigst Du für die Alter-Entscheidungen nur noch relativ kurze IFs:

    JavaScript
    1. if ( Alter < 99 ) Altersklasse = 'AK 70+';
    2. if ( Alter < 70 ) Altersklasse = 'AK 60';
    3. if ( Alter < 60 ) Altersklasse = 'AK 50';
    4. if ( Alter < 50 ) Altersklasse = 'AK 40';
    5. if ( Alter < 40 ) Altersklasse = 'AK 30';
    6. if ( Alter < 30 ) Altersklasse = 'AK';

    switch kann im case glaube ich nicht mit Operanden, sondern nur mit absoluten Werten um.

  • Hallo nochmal...


    Für mich hat sich ein neues Problem ergeben....


    Es stehen mehrere Klassen (Damen, Herren) und Wertungen (LM Steiermark, Gäste, ....) zur Verfügung.... Diese haben dann "andere Altersklassen" je nach Alter....


    zb: if ( Klasse != 'Damen' || Wertung != 'Gäste')


    1. if ( Alter < 99 ) Altersklasse = 'Damen AK 1';
    2. if ( Alter < 45 ) Altersklasse = 'Damen AK 2';



    Wie komme ich da an eine Lösung heran...


    Nochmals herzlichen Dank....

  • Da würde ich die Funktion parametrisieren, um etwas Funktionalität reinzukriegen, bspw:


    JavaScript
    1. function calculateAge( klasse, wertung ) {
    2. //...
    3. }

    Die Grenzen würde ich versuchen in Objekten bzw. Arrays abzulegen und je nach Parameter entsprechende Werte auslesen.

    Für sowas bieten sich auch Datenbanken an.