2017-05-30 3 views
0

Wenn die Bedingung in der for-Schleife erfüllt ist, möchte ich den Code nicht mehr ausgeführt werden. Wenn die Bedingung nicht erfüllt ist, möchte ich, dass der Code außerhalb der for-Schleife weiterläuft und die Warnung ausführt.So stoppen Sie den Rest des Codes ausgeführt werden - JavaScript

Viele Quellen haben mir gesagt, dass ich das Schlüsselwort "return" verwenden soll. Ich habe es benutzt, aber der Alarm läuft auch, wenn die Bedingung erfüllt ist.

Habe ich das Keyword an der falschen Stelle platziert? Oder gibt es eine bessere Möglichkeit, die Funktion zu stoppen, wenn die Bedingung erfüllt ist?

Das ist mein javascript:

function addEvent() { 
 
    var snumber = document.getElementById('snumberE').value; 
 
    var pass = document.getElementById('passE').value; 
 
    var passS = String(pass) 
 
    var snumS = String(snumber) 
 
    var arr = JSON.parse(localStorage.getItem('profiles')); 
 
    for(var i=0; i<arr.length; i++) { 
 
     if(arr[i].password == passS && arr[i].snumber == snumS) { 
 
      window.location = "StudentView.html"; 
 
      alert('YEAAA'); 
 
      return; 
 
     } 
 
     } 
 
    alert('Please enter valid login info'); 
 
    } 
 
function addEvt() { 
 
    var uname = document.getElementById('name').value; 
 
    var psw = document.getElementById('pass').value; 
 
    var arr1 = JSON.parse(localStorage.getItem('profilesT')); 
 
    for(var i=0; i<arr1.length; i++) { 
 
     var uname = document.getElementById('name').value; 
 
     var psw = document.getElementById('pass').value; 
 
     if(arr1[i].pass1 == psw && arr1[i].usern == uname) { 
 
      window.open('createAnnouncement.html'); 
 
      return; 
 
     } 
 
    } 
 
    alert('Please enter valid credentials or sign up'); 
 
}

+0

Ihre 'return' erwarten richtig plaziert ist für das, was Sie wollen. Was Sie behaupten zu beobachten, ist unmöglich –

+1

Ihr 'Alarm ('YEAAA');' sollte nie feuern, da Sie die Position des Fensters vorher ändern. Bist du sicher, dass dein 'arr' eine Länge hat? – Kaiido

+0

Ja, ich habe es erneut versucht und es führt wie gewünscht aus. Ich war wahrscheinlich mit anderen Fehlern in meinem Code verwechselt. Vielen Dank! –

Antwort

2

return sollte das tun, was Sie wollen, und die Funktion verlassen, wo Sie es fordern.

Kann in dieser vereinfachten Version sehen, dass die Warnung nicht ausgelöst wird. Ihre conditionals tun nicht das, was Sie erwarten, oder die gespeicherten Daten ist nicht das, was Sie

function test() { 
 
    var nums = [1, 2, 3, 4, 5, 6]; 
 
    for (var i = 0; i < nums.length; i++) { 
 
    console.log('Loop fired for number ' + nums[i]); 
 
    if (nums[i] === 3) { 
 
     console.log('return now exiting function') 
 
     return; 
 
    } 
 
    } 
 
    alert("This alert shouldn't fire") 
 
} 
 

 
test();

+0

abrufen ja funktioniert mein Code jetzt wie gewünscht. Ich habe verschiedene Methoden ausprobiert, um eine neue Seite zu öffnen, was mich wahrscheinlich verwirrt hat. Vielen Dank! –

Verwandte Themen