2014-09-24 72 views
0

好吧,我正在做一個註冊和登錄使用javascript和localstorage論壇。 「學校派遣」我的問題是,當我創建多個用戶並將它們存儲在localstorage中時,我的for循環不會循環遍歷它們,只有第一個循環。所以我只能訪問我創建的第一個用戶的論壇。javascript for循環dosn't循環通過用戶創建

function login() { 
    if (checklogin()) { 
     boxAlert.style.display = "block"; 
     boxAlert.innerHTML = "Welcome" + ""; 
     wallPanel.style.display = "block"; 
    } else { 
     boxAlertfail.style.display = "block"; 
     boxAlertfail.innerHTML = "Go away, fail"; 
    } 
} 

function checklogin(){ 
    for (var i = 0; i < aUsers.length; i++){ 
     if (aUsers[i].email == inputLoginMail.value && aUsers[i].password == inputLoginPassword.value){ 
      return true; 
     }else{ 
      return false; 
     } 
    } 
} 
+0

裝入一個'的console.log(aUsers)'你通過他們在'checklogin' – 2014-09-24 14:49:23

+4

你返回循環之前'FALSE'第一用戶失敗後您'if'因此'for'循環和功能在那裏停止 – FabioG 2014-09-24 14:49:39

+0

a用戶爲空。 var aUsers = []; – Rudi 2014-09-24 14:53:05

回答

1

怎麼樣:

function checklogin() { 
    var validLogin = false; 
    for (var i = 0; i < aUsers.length; i++) { 
     if (aUsers[i].email == inputLoginMail.value 
      && aUsers[i].password == inputLoginPassword.value) { 
      validLogin = true; 
      break; 
     } 
    } 
    return validLogin; 
} 
+0

感謝Xcera,解決了它:) – Rudi 2014-09-24 15:10:57

0

哎唷!你第一次嘗試就返回錯誤。最好的方法是設置一個變量然後檢查它。

function checklogin() { 
     var z = 0; 
     for (var i = 0; i < aUsers.length; i++) { 
      if (aUsers[i].email == inputLoginMail.value && aUsers[i].password == inputLoginPassword.value) { 
       z = 1; 
       break; 
      } else { 
       z = 0; 
      } 

      if (z == 1) { 
       // User logged in 
      } else { 
       // Fake user 
      } 
     } 
+0

當我嘗試登錄時,Dosn't從本地存儲中檢索任何東西 – Rudi 2014-09-24 15:12:24