[JavaScript] if mit mehreren Bedingungen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von SidDasFaultier, 12. März 2012 .

  1. 12. März 2012
    if mit mehreren Bedingungen

    Hey Rushler,

    ich dreh gleich durch...das ist doch so richtig...

    Code:
     
     var Begriff = document.forms[0].bild1.value;
     var x = Begriff.length;
     var y = Begriff.lastIndexOf('.')+1;
     var Teil = Begriff.substr(y, x);
    if (Teil != 'jpg' || Teil != 'JPG' || Teil != 'JPEG' || Teil != 'jpeg')
     {
     alert('Sie haben einen flaschen Dateityp beim Bild 1 verwendet! Bitte nur Bilder im JPG-Format hochladen.');return false;
     } 
    ..bei mir gibt es trotzdem die Fehlermeldung aus, wenn ich ein jpg hochlade -.-

    wo liegt der Fehler?!
     
  2. 12. März 2012
    AW: if mit mehreren Bedingungen

    Ich programmiere kein JavaScript aber gefühlsmäßig würde ich das so machen
    Code:
    if ((Teil != 'jpg') || (Teil != 'JPG') || (Teil != 'JPEG') || (Teil != 'jpeg'))
     
  3. 12. März 2012
    AW: if mit mehreren Bedingungen

    ...leider nein...funzt immernoch nicht... -.- trotzdem danke!
     
  4. 12. März 2012
    AW: if mit mehreren Bedingungen

    Ich würde es so machen:
    Code:
    var Begriff = "Bild.jpg";
    var x = Begriff.length;
    var y = Begriff.lastIndexOf('.')+1;
    var Teil = Begriff.substr(y, x);
    if (!(Teil == 'jpg' || Teil == 'JPG' || Teil == 'JPEG' || Teil == 'jpeg')) {
     alert('Sie haben einen flaschen Dateityp beim Bild 1 verwendet! Bitte nur Bilder im JPG-Format hochladen.');
     return false;
    }​
    Hat ein wenig was mit den Bedingungen zu tun: ich schaue, ob die Endung irgendwo vorkommt und das negiere ich. Wenn das dann wahr ist, dann ist die Endung ungültig. Funktioniert.

    Hier das Beispiel:
    Edit fiddle - JSFiddle

    greez
     
  5. 12. März 2012
    AW: if mit mehreren Bedingungen

    Super! Funktioniert! Danke!

    Aber was war dann bitte an meinem falsch? Im Prinzip müsste es doch mit meinem auch gehen, oder?
     
  6. 12. März 2012
    AW: if mit mehreren Bedingungen

    Also nochmal zur Erklärung: deine Bedingung lieferte immer true zurück. Warum? Schau dir an, was die einzelnen Unterbedingungen liefern selbst wenn keine der genannten Endungen zutreffen, dann liefern alle Unterbedingungen true und da du die Bedingungen mit ODER verknüpfst ist die Aussage immer wahr.

    Eine Tabelle mit einem beispiel kann das anschaulich machen:
    Endung: jpg
    Teil != 'jpg' => false
    Teil != 'JPG' => true
    Teil != 'JPEG' => true
    Teil != 'jpeg' => true

    Aussage: true

    Endung: xxx
    Teil != 'jpg' => true
    Teil != 'JPG' => true
    Teil != 'JPEG' => true
    Teil != 'jpeg' => true

    Aussage: true

    Deine Aussage war also immer wahr.

    Bei meiner Aussage ist es so, dass sie nur dann wahr liefert, wenn die Endung nicht unter den überprüften vorkommt.

    greez
     
  7. 12. März 2012
    AW: if mit mehreren Bedingungen

    oh man ey...stimmt...manchmal könnt ich mich selbst... -.-
    Danke für deine Hilfe
     
  8. 12. März 2012
    AW: if mit mehreren Bedingungen

    geht mit nem regex einfacher

    Code:
    if (!/jpe?g/i.test(Teil)) {
     alert("falsch");
    }
    ansonsten kannst du mehrfachabfragen dieser art mit einem switch-case erledigen.
    das hat zwar den selben effekt wie eine if-abfrage, ist aber deutlich übersichtlicher und einfacher zu erweitern.

    java und c-programmierer übersehen diese art von abfrage oft, da es dort nicht möglich ist strings in switch-case zu vergleichen, in javascript ist das aber ein alltägliches konstrukt

    zudem hast du automatisch einen === vergleich.

    Code:
    switch (Teil) {
     case 'jpg':
     case 'jpeg':
     case 'JPG':
     case 'JPEG':
     break;
     
     default:
     alert('fehler!')
    }
    um diese abfrage noch zu vereinfachen kannst du so vorgehen (gänige praxis):
    Code:
    switch (Teil.toLowerCase()) {
     case 'jpg':
     case 'jpeg':
     break;
     
     default:
     alert('fehler!')
    }
     
  9. 14. März 2012
    AW: if mit mehreren Bedingungen

    Auch wenn die Frage bereits beantwortet wurde. Mit "&&" statt "||" tut es das auch (Selber Effekt wie den kompletten Ausdruck zu negieren)
     
  10. 14. März 2012
    AW: if mit mehreren Bedingungen

    eine anmerkung möchte ich dazu auch los werden.
    sollte man mit einem framework arbeiten,
    dann gibt es sicher ne function wie bei
    php -> in_array()
    jQuery -> inArray()
    mooTools -> indexOf()
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.