2017-05-28 2 views
0

Ich habe eine Bedingung, die die Funktion ausführen soll. aber es würde nicht funktionieren."oder" Bedingung funktioniert nicht JavaScript

if ((event.keyCode !== 40) || (event.keyCode !== 38)) { 
     self.inputVal = input.value; 
     var result = pokemonNames.filter(function(pokemon) { 
      return pokemon.includes(self.inputVal.toLowerCase()); 
     }); 
     if (result.length > 5) { 
      result = result.filter(function(pokemon, index) { 
      return index < 5; 
      }); 
     } 

wenn ich nur event.keyCode !== 40 es funktioniert gut, aber wenn ich (event.keyCode !== 40) || (event.keyCode !== 38) verwenden würde es funktionieren.

+3

Es ist Ihre Logik, die gebrochen ist, wird es immer von einem der beiden Codes unterscheiden. Ihr Zustand vereinfacht sich auf "wahr". Sie wollen entweder '(k! = X) && (k! = Y)' oder '(k == x) || (k == y) '. – Aaron

+0

Was versuchen Sie genau zu erreichen? – VlassisFo

+0

Verwenden Sie && anstelle von || – Morleee

Antwort

1

Wenn Sie das, wenn Block ausgeführt werden soll, wenn die event.keyCode nicht mehr als 40 oder 38 ist wollen Sie diese

((event.keyCode !== 40) && (event.keyCode !== 38)) 

Wenn Sie möchten, um den Code auszuführen, wenn event.keyCode 40 oder 38

((event.keyCode == 40) || (event.keyCode == 38)) 
+1

OK, wenn du meine Antwort runtermeldest, sag mir wenigstens warum –

0

Wie Aaron in den Kommentaren darauf hingewiesen hat, wird es immer als true aufgelöst. Wenn die Zahl 40 ist, ist die zweite Bedingung wahr (da es nicht 38 ist) und umgekehrt. Verwenden Sie stattdessen && und es wird funktionieren.

Verwandte Themen