2016-07-12 9 views
-2

Ich brauche drei Bedingungen zu überprüfen,if-Anweisung mit mehr als einer Bedingung

sheet_exists = 1 
recalc = 1 
qty_total and new_qty_total are not equal 

Die if-Anweisung funktioniert gut, wenn nur die ersten zwei Argumente verwendet:

if(sheet_exists === 1 && recalc === 'yes'){ 
    //do something 
} 

Aber Wenn ich versuche, das dritte Argument hinzuzufügen, schlägt es fehl, die Aktionen in der if-Anweisung werden ignoriert. Ich habe versucht:

if((sheet_exists === 1) && (recalc === 'yes') && (qty_total !== new_qty_total)){ 
    //do something 
} 

Und:

if(sheet_exists === 1 && recalc === 'yes' && (qty_total !== new_qty_total)){ 
    //do something 
} 

Und:

if(sheet_exists === 1 && recalc === 'yes' && qty_total !== new_qty_total){ 
    //do something 
} 

Wohin gehe ich falsch?

+0

Alle sind gültig, obwohl die dritte in diesem Fall am korrektesten ist. Was genau funktioniert nicht gut? –

+0

Willst du sagen, das sollte nicht funktionieren https://jsfiddle.net/x2s89pnv/ –

+2

Wäre toll, wenn Sie eine Geige erstellen können. –

Antwort

-2

In Anbetracht der Tatsache, dass Sie mit dem Verhalten der ersten beiden Bedingungen zufrieden sind, und nicht mit dem letzten, muss das Problem in der letzten sein.

beachten, qty_total !== new_qty_total zurück TRUE nur dann, wenn der Wert oder Typ von qty_total und new_qty_total unterschiedlich ist.

Wenn einer eine Ganzzahl 100 ist und der andere eine Zeichenfolge '100' ist, wird die Bedingung als TRUE ausgewertet, da sie sich vom Datentyp unterscheiden. Wenn sie beide Ganzzahlen sind, wird sie FALSE zurückgeben, da weder der Wert noch der Typ unterschiedlich sind.

Um sicherzustellen, dass der Vergleich in Ordnung ist, stellen Sie sicher, dass beide Variablen den gleichen Datentyp haben.

+1

Diese ganze Antwort ist falsch außer für die erste Zeile. Ich glaube, Sie verwechseln den Operator '! ==' mit dem Operator '==='. – JLRishe

+0

Sie haben Recht, ich war verwirrt. Wenn ich mich nicht irre, sollte es jetzt korrekter sein. –

+1

Es ist genauer als vorher, aber wie ist es eine Lösung für das Problem von OP? – JLRishe

Verwandte Themen