2014-07-02 7 views
0

Je veux boucler le stockage local pour le mot de passe et le nom d'utilisateur pour vérifier si correct et alerter un message si ou non.
Le code fonctionne bien, mais je ne sais pas où écrire le message "invalid username" parce que la boucle traverse chaque enregistrement, de sorte que les messages apparaissent pour chaque vérification d'enregistrement jusqu'à ce qu'il trouve.
Ce que je veux, c'est faire apparaître le message lorsque la recherche est terminée.boucle le stockage local

Voici mon code:

$("#login").click(function(){ 
    var username =$("#user").val(); 
    var password =$("#pass").val(); 
    var userCount = localStorage.getItem('userCount'); 

    for (i=1;i<=userCount;i++) { 
     var user = JSON.parse(localStorage.getItem("user" + i)); 
     if((user.username == username)||(user.password == password)){ 
      alert("welcome "+username); 
     } else { 
      alert("Invalid Username");//this message keeps poping up on every record until username found 
     } 
    } 
}); 
+0

par curiosité: à quoi cela sert-il? –

Répondre

0

Définissez une variable booléenne sur true lorsque vous trouvez une correspondance et arrêtez la boucle à l'aide de break. Sinon, si le booléen est toujours false après la fin de la boucle, aucune correspondance n'a été trouvée.

$("#login").click(function(){ 
    var username =$("#user").val(); 
    var password =$("#pass").val(); 
    var userCount = localStorage.getItem('userCount'); 
    var foundOne = false; 

    for (i=1;i<=userCount;i++) { 
     var user = JSON.parse(localStorage.getItem("user" + i)); 
     if((user.username == username)&&(user.password == password)){ 
      foundOne = true; 
      break; 
     } 
    } 

    if(foundOne) { 
     alert("welcome "+username); 
     // other "welcome" code 
    } else { 
     alert("Invalid Username"); 
    } 
}); 

NB, vous pouvez utiliser l'opérateur && au lieu de || ici:

(user.username == username)&&(user.password == password) 

sinon vous pouvez obtenir un match pour un utilisateur qui a le même mot de passe comme un autre.

+0

oui merci je ne l'ai pas reconnu :) – user3789242

1

Mettre la boucle dans une fonction.

Renvoie true (ou l'objet utilisateur) à partir de cette fonction si un élément de la boucle correspond.

Renvoie false après la boucle (que vous n'atteindrez que si rien ne correspond).

Gérez votre alerte en dehors de la fonction en fonction de la valeur de retour de l'appel.