NEWS

Anfänger if und if else



  • Hallo,
    ich schon wieder 😞

    Habe mir mal eine vergleich abfrage gebastelt, aber irgendwie bleib meine abfrage immer in einer hängen bis ich das script neu starte:

    const wert_1 = getState("javascript.0.Test.wert_1").val;
    const wert_2 = getState("javascript.0.Test.wert_2").val;
    
    on(wert_1 || wert_2, function (obj) {    
    if (istwert  >= vorgabe_ID4_min) {
     {setState(sollwert, getState(sollwert_ID4).val)
    }
    }
    
    else if (istwert >= vorgabe_ID3_min) {
     {setState(sollwert, getState(sollwert_ID3).val)
    }
    }
    
    else if (istwert >= vorgabe_ID2_min) {
     {setState(sollwert, getState(sollwert_ID2).val)
     }
    }
    
    else if (istwert >= vorgabe_ID1_min) {
     {setState(sollwert, getState(sollwert_ID1).val)
     }
    }
    
    else if (istwert >= 1) {
     {setState(sollwert, 30); //ersatzwert
     } 
    }
    });
    

    Ich will eigentlich immer den grössten vergleich nutzten.
    Bin wahrscheinlich komplett daneben oder?


  • Developer Most Active

    @mike1976 bissel zu viele klammern...

    const wert_1 = getState("javascript.0.Test.wert_1").val;
    const wert_2 = getState("javascript.0.Test.wert_2").val;
    
    on(wert_1 || wert_2, function (obj) {    
    
      if (istwert  >= vorgabe_ID4_min) {
       setState(sollwert, getState(sollwert_ID4).val)
      } else if (istwert >= vorgabe_ID3_min) {
                   setState(sollwert, getState(sollwert_ID3).val)
            } else if (istwert >= vorgabe_ID2_min) {
                    setState(sollwert, getState(sollwert_ID2).val)
                   } else if (istwert >= vorgabe_ID1_min) {
                          setState(sollwert, getState(sollwert_ID1).val)
                   } else if (istwert >= 1) {
                      setState(sollwert, 30); //ersatzwert
                   }
    });
    

    Tipp: gewöhne dir an Code zu formatieren



  • on({id: "javascript.0.Test.wert_1"}, function (obj) { 
          
      if (sollwert>= vorgabe_ID4_min) {
       setState(sollwert, getState(sollwert_ID4).val)
      } else if (sollwert>= vorgabe_ID3_min) {
                   setState(sollwert, getState(sollwert_ID3).val)
            } else if (sollwert>= vorgabe_ID2_min) {
                    setState(sollwert, getState(sollwert_ID2).val)
                   } else if (sollwert>= vorgabe_ID1_min) {
                         setState(sollwert, getState(sollwert_ID1).val)
                   } else if (sollwert>= 1) {
                      setState(sollwert, 30); //ersatzwert
                   }
                   
    });
    if (sollwert>= vorgabe_ID1_min) log(sollwert_ID1);
    if (sollwert>= vorgabe_ID2_min) log(sollwert_ID2);
    if (sollwert>= vorgabe_ID3_min) log(sollwert_ID3);
    if (sollwert>= vorgabe_ID4_min) log(sollwert_ID4);
    

    hmm... die vergleiche kommen zu stande,
    aber die sollwert übergabe bleibt immer in einem vergleich hängen und
    erst wenn ich das script neustarte geht er in den next richtigen vergleich.

    ist der ablauf nicht so:

    1.) on({id: "javascript.0.Test.wert_1"}, bei wert änderung
    2.) code wird abgearbeitet von oben nach unten und alle vergleiche werden neu ausgewertet.

    Habe mal bewusst "on(wert_1 || wert_2," weggelassen weil bei den tut sich gar nichts.


  • Developer

    Hey,

    Punkt 1 ist soweit richtig.

    Wenn du die folgenden Zeilen meinst, die nur einmalig ausgeführt werden, dann ist die Annhame richtig, da diese nur einmal beim starten durchlaufen werden. Anderfalls müsstest du sie in den on() Teil mit einbauen.

    if (sollwert>= vorgabe_ID1_min) log(sollwert_ID1);
    if (sollwert>= vorgabe_ID2_min) log(sollwert_ID2);
    if (sollwert>= vorgabe_ID3_min) log(sollwert_ID3);
    if (sollwert>= vorgabe_ID4_min) log(sollwert_ID4);
    

    J.A.R.V.I.S.


Log in to reply
 

Suggested Topics

  • 3
  • 19
  • 9
  • 6
  • 2
  • 7
  • 30
  • 7

1.3k
Online

32.4k
Users

39.0k
Topics

528.7k
Posts