2017-12-20 9 views
2

Ich dachte, ich weiß, was ist und wie man || ("Logical Or") verwendet, bis etwas zu sehen. DieseJavascript - Logisch Oder ||

ist, was ich verstehe:

if(conditional A || conditional B) { 
    // execute if either A or B is true 
} 

Dies ist, was ich nicht tun, würden Sie bitte erklären.

var inputs = document.querySelectorAll('input'); 
 
var inBetween = false; 
 

 
for(var i = 0; i < 10; i++) { 
 
    if(i == 1 || i == 3) { 
 
    \t inBetween = !inBetween; 
 
    } 
 
    if(inBetween) { 
 
     inputs[i].checked = true; 
 
    } 
 
}
<ul> 
 
    <li><input type="checkbox">ONE</li> 
 
    <li><input type="checkbox">TWO</li> 
 
    <li><input type="checkbox">THREE</li> 
 
    <li><input type="checkbox">FOUR</li> 
 
    <li><input type="checkbox">FIVE</li> 
 
    <li><input type="checkbox">SIX</li> 
 
    <li><input type="checkbox">SEVEN</li> 
 
    <li><input type="checkbox">EIGHT</li> 
 
    <li><input type="checkbox">NINE</li> 
 
    <li><input type="checkbox">TEN</li> 
 
</ul>

Ich dachte, entweder der coniditon wahr ist, entweder i == 1 oder i == 3, wird der Code innerhalb des if-Block ausgeführt wird. Aber wie kommt es dann, dass eine Menge Inputs involviert sind? (in diesem Fall waren 1-3 beteiligt).

Warum ist es ein Bereich 1-3, aber nicht nur 1 oder 1 & 3?

Warum ersetzt das Ersetzen !inBetween durch true innerhalb der ersten if Klausel nicht?

Entschuldigung für eine sehr, sehr grundlegende Frage. Aber ich kann es wirklich nicht herausfinden.

Die Codes wurden aus Javascript30 vereinfacht: https://www.youtube.com/watch?v=RIPYsKx1iiU

+8

Weil Sie die gleiche 'inBetween' Variable verwenden. Sobald i 1 ist, wird "inBetween" wahr. Es bleibt * wahr, bis "inBetween" 3 ist, wo es falsch wird. – Li357

+0

Setzen Sie einfach 'inBetween = false; 'in den zweiten if-Block zurück. –

+0

Danke Li357, Hassan Imam – Kenny

Antwort

0

Wie Li357 sagte, die Logik des || Operator ist, wie Sie es verstehen. Was passiert, ist das inBetween Flag wird nach true nach i == 1 geschaltet. Und das inBetween Flag wird nicht geändert, bis i == 3, wodurch Ihre zweite if Anweisung if(inBetween) ausgelöst wird.

Wenn Sie Ihre Flagge wechseln inBetween am Anfang, wenn jede Schleife dies Ihr Problem beheben wird.

for(var i = 0; i < 10; i++) { 
    inBetween = false; 
    if(i == 1 || i == 3) { 
     inBetween = true; 
    } 
    if(inBetween) { 
     inputs[i].checked = true; 
    } 
} 
+0

vielen Dank Snar3! – Kenny

Verwandte Themen