6
respostas

" While"entrando em looping

  <script>

     var criaLogin = prompt("Crie um login");   
     var criaSenha = prompt("Crie uma senha");

     var login = prompt("digite sua login");
     var senha = prompt("digite seu senha");

     var maximoTentativas = 3;
     var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas){
     if(criaLogin == login && criaSenha == senha){

       document.write("ACESSO PERMITIDO");
       tentativaAtual = maximoTentativas;

     }
     else{
         if (tentativaAtual == 3){

            document.write("VOCÊ ESGOTOU AS TENTATIVAS");
         }
         else{
             document.write("LOGIN OU SENHA INVALIDOS")
         }
     }

    }



    </script>

As variáveis precisam ficar dentro o while? O que acontece "por tráz dos panos"?

6 respostas

oie Maike,

o loop infinito acontece porque a tentativaAtual nunca sai do 1, você precisa dizer que a tentativa vai aumentar a cada erro.

Faz isso:

else{
             document.write("LOGIN OU SENHA INVALIDOS");
             tentativaAtual++;
   }

se te ajudou de alguma forma, marca como resolvido para mais pessoas acharem essa dica!!

Tenta isso:


<script>

     var maximoTentativas = 3;
     var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas){
     var criaLogin = prompt("Crie um login");   
     var criaSenha = prompt("Crie uma senha");

     var login = prompt("digite sua login");
     var senha = prompt("digite seu senha");

     if(criaLogin == login && criaSenha == senha){

       document.write("ACESSO PERMITIDO");
       tentativaAtual = maximoTentativas;

     }
     else{
         if (tentativaAtual == 3){

            document.write("VOCÊ ESGOTOU AS TENTATIVAS");
         }
         else{
             document.write("LOGIN OU SENHA INVALIDOS");
             tentativaAtual++;
         }
     }

    }



    </script>

Fala Fabio! Ta onfire hoje amigo! haha Realmente não em atentei a isso,fiz o que vc sugeriu e continuou em loop,deu certo quanto tirei da condição else e deixei fora do "bigode" no entanto ainda não funcionou como deveria.

   <meta charset="UTF-8">

 <script>

     var criaLogin = prompt("Crie um login");   
     var criaSenha = prompt("Crie uma senha");

     var login = prompt("digite sua login");
     var senha = prompt("digite seu senha");

     var maximoTentativas = 3;
     var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas){
        if(criaLogin == login && criaSenha == senha){

         document.write("ACESSO PERMITIDO");
         tentativaAtual = maximoTentativas;

     }
        else{
            if (tentativaAtual == 3){

            document.write("VOCÊ ESGOTOU AS TENTATIVAS");
         }
             else{
             document.write("LOGIN OU SENHA INVALIDOS");  
         }
     }
     tentativaAtual = tentativaAtual +1;

    }




 </script>

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Verifica esse <= do while talvez funcione só com <

while(tentativaAtual < maximoTentativas){
     var criaLogin = prompt("Crie um login");   
     var criaSenha = prompt("Crie uma senha");

     var login = prompt("digite sua login");
     var senha = prompt("digite seu senha");

     if(criaLogin == login && criaSenha == senha){

       document.write("ACESSO PERMITIDO");
       tentativaAtual = maximoTentativas ;

     }
     else{
         if (tentativaAtual == 3){

            document.write("VOCÊ ESGOTOU AS TENTATIVAS");
         }
         else{
             document.write("LOGIN OU SENHA INVALIDOS");
             tentativaAtual++;
         }
     }

    }

O que funcionou aqui foi declarar as variaveis dentro do while e não fora, não entendi muito bem por que,mas segue o barco.Gosto de entender onde ta o erro mais vou seguir em frente pra não fritar muito haha.Vlw pela ajuda!

O Maike, já tentou substituir o var por let no momento das declarações das variaveis? Pelo que entendi o var pode começar causar confusões pois elas são variaveis globais.

Nesse link fala um pouco disso: https://www.alura.com.br/artigos/entenda-diferenca-entre-var-let-e-const-no-javascript