timmy: if Abfragen

Hallo!

ich stehe irgendwie auf nem schlauch und weiss nicht weiter:

Ich will eine ziemlich lange if - else if abfrage machen. Diese sollte folgendes abrüfen: wenn "Feld test==a und Feld test2 größer oder gleich 1000 dann p=e, sonst wenn größer/gleich 500 aber kleiner als 1000 dann p=d; sonst wenn kleiner als 500 dann p=c" und dann die gleiche prüfung nur mit anderen voraussetzungen weiter mehrmals.

Nun mein Problem:
(1) Ich bin mir nicht sicher, ob die Abfrage das tut, was ich oben beschrieben habe? Sie funktioniert bei mir nämlich nur dann richtig, wenn ich test2==1000 abprüfe.

if (document.config.test.value == "a" && document.config.test2.value >= "1000")
 {p = e;}
 else if (document.config.test.value == "a" && document.config.test2.value >= "500")
 {p = d;}
 else if (document.config.test.value == "a" && document.config.test2.value < "500")
 {p = c;}
/**---------------------------------------**/
else if(document.config.test.value == "b"  && document.config.test2.value >= "1000")
{p = c;}
else if(document.config.test.value == "b"  && document.config.test2.value >= "500")
{p = b;}
else if(document.config.test.value == "b"  && document.config.test2.value < "500")
{p = a;}

und so weiter.

Bitte um Hilfe und Frohe Ostern!

  1. Hi,

    && document.config.test2.value >= "1000")

    Willst Du hier wirklich 2 Strings miteinander vergleichen? Oder doch eher Zahlen?

    {p = e;}

    e oder "e"?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hi!

    funktioniert bei mir nämlich nur dann richtig, wenn ich test2==1000 abprüfe.

    Nein, das tust du nicht. Du prüfst test2=="1000" nicht test2==1000.
    Laß die Anführungszeichen mal weg. Du willst prüfen, ob der Wert von test2 größer als die Zahl 1000 ist, nicht ob sie größer als der String "1000" ist.

    Gruß, rob

    1. Hi!
      Laß die Anführungszeichen mal weg. Du willst prüfen, ob der Wert von test2 größer als die Zahl 1000 ist, nicht ob sie größer als der String "1000" ist.

      Gruß, rob

      Hallo rob!

      Vielen Dank! Das war genau das Problem! Danke für den hilfreichen Hinweis!

  3. if (document.config.test.value == "a" && document.config.test2.value >= "1000")
    {p = e;}
    else if (document.config.test.value == "a" && document.config.test2.value >= "500")
    {p = d;}
    else if (document.config.test.value == "a" && document.config.test2.value < "500")
    {p = c;}

    Willst du das nicht verschachteln, eine Variabel verwenden und den dritten Vergleich brauchst du doch gar nicht, das spart Schreibarbeit

    var val_1 = document.config.test.value;  
    var val_2 = document.config.test.value;  
      
    if ( val_1 == "a")  
    {  
    if( val_2 >= 1000 )  p = e;  
    else if (val_2 >= 500) p = d;  
    else p = c;  
    }  
    
    

    Noch schöner mit diesem Operator http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder

    var val_1 = document.config.test.value;  
    var val_2 = document.config.test.value;  
      
    if ( val_1 == "a")  
    {  
    p =  val_2 >= 1000 ?  e : val_2 >= 500 ? d : c ;  
    }  
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hi,

      p =  val_2 >= 1000 ?  e : val_2 >= 500 ? d : c ;

        
      Wobei ich hier noch Klammern setzen würde, um klarzustellen, was gemeint ist (auch wenn sich das aus der Operator-Rangfolge schon ergibt, aber die Tabelle kenn ich nicht auswendig).  
      Einmal um die Bedingung, und bei verschachtelten ?: um das innere ?:  
        
      Wird hier für den zweiten ?: Operator val\_2 oder e mit 500 verglichen?  
      Ich müßte erst nachgucken und nachdenken, ob das jetzt als  
        
      `p = (val_2 >= 1000 ? e : val_2) >= 500 ? d : c;`{:.language-javascript}  
      oder  
      `p = val_2 >= 1000 ? e : ( val_2 >= 500 ? d : c);`{:.language-javascript}  
      oder gar  
      `p = (val_2 >= 1000 ? e : (val_2 >= 500)) ? d : c;`{:.language-javascript}  
      bedeutet.  
        
      cu,  
      Andreas
      
      -- 
      [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
      [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
      [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
      
      
      1. p =  val_2 >= 1000 ?  e : val_2 >= 500 ? d : c ;

        
        >   
        > Wobei ich hier noch Klammern setzen würde, um klarzustellen, was gemeint ist  
          
        Kann man machen, für mich ist so ein Ausdruck aber eindeutig, es ist ja klar erkennbar, was die Vergleichsoperatoren sind und da es jeweils nur einen Vergleich gibt sollten eigentlich keine Unklarheiten entstehen.  
          
        Struppi.
        
        -- 
        [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)