2017-05-30 133 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

是的,我的代码现在按需要工作。我正在尝试不同的方法来打开一个新的页面,这可能使我感到困惑。谢谢! –