2016-07-27 7 views
-7

Seine einfache Arbeit, wenn ein Benutzer eine Nummer eingibt, die nicht mit 6 oder 9 ist flehe, bekommt er Fehler:einfache JavaScript-if-Anweisung mit charAt nicht

console.log($(this).val().charAt(0)); 

if($(this).val().charAt(0) != 6 || $(this).val().charAt(0) != 9){ 
    x=false; 
    }else { 
    x=true; 
    } 

console.log richtig das erste Zeichen anzeigt. Das heißt, der Wert existiert ..

Aber egal, ob ich 6 oder 7 oder 9 tippe, ich werde immer falsch ... Warum?

+7

Denken 1 Sekunde über das OR hier. –

+0

Nun: '||' = 'ODER' :) – eisbehr

+0

was passiert, wenn es 6 ist, hast du' 6! = 6 || 6! = 9', so ist der zweite Ausdruck truthy, der gleiche von 9 (dann wird der erste Ausdruck truthy), so wird Ihr Zustand immer wahr –

Antwort

1

Sie müssen die logischen Bedingungen invertieren, da beiden Staaten unmöglich zugleich wahr sein können, ist so x immer false gesetzt. Versuchen Sie folgendes:

var chr = $(this).val().charAt(0); 
if (chr == '6' || chr == '9') { 
    x = true; 
} else { 
    x = false; 
} 

Von dort können Sie jetzt sehen, dass Sie nicht einmal die if Zustand benötigen, wie Sie x direkt einstellen können, wie folgt aus:

var chr = $(this).val().charAt(0); 
var x = chr == '6' || chr == '9'; 
3

Was auch immer der Wert von somevar,

somevar!=6 OR somevar!=9 

immer wahr ist.

Die hier beste Lösung wäre wahrscheinlich ein regulärer Ausdruck sein:

var x = /^[69]/.test($(this).val());