2017-05-30 55 views
0

如果滿足for循環中的條件,我希望代碼停止運行。儘管如果條件不滿足,我希望代碼在for循環之外繼續並執行警報。如何停止執行代碼的其餘部分 - javascript

許多消息來源告訴我使用'return'關鍵字。我已經使用了它,但即使條件滿足,警報仍然運行。

我把關鍵字放在錯誤的地方?或者是否有更好的方法在條件滿足時停止功能?

這是我的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

你'return'正確放置你想要的東西。你聲稱要觀察的事情是不可能的 –

+1

你的'alert('YEAAA');'不應該因爲你之前改變了窗口的位置而開火。你也確定你的'arr'有一個長度嗎? – Kaiido

+0

是的,我再次嘗試,並根據需要執行。我可能與我的代碼中的其他錯誤混淆。謝謝! –

回答

2

return應該做你想要什麼,退出你在哪裏調用它的函數。

在這個簡化版本中可以看到警報不會觸發。你的條件語句是不是做你所期望的或存儲的數據是不是您所期望

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

是的,我的代碼現在按需要工作。我正在嘗試不同的方法來打開一個新的頁面,這可能使我感到困惑。謝謝! –