Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Porque não funciona?

Com o código desta forma não deveria rodar 3 vezes caso erre o usuário e senha?

<meta charset="UTF-8">
<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");

    function logadeNovo(){  

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

    }


    var tenta = 0;

    while(tenta <= 3){

    if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

        alert("Bem-vindo ao sistema " + loginInformado);
        tenta=3;
    } else {

        alert("Login inválido. Tente novamente");
        tenta=logadeNovo() + 1;
    }

    };

</script>
2 respostas
solução!

Olá Guilherme, tudo bem com você?

Existem alguns pequenos errinhos que impossibilitam esse comportamento, por exemplo:

    if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

        alert("Bem-vindo ao sistema " + loginInformado);
        tenta=3;
}

Veja que o nosso while vai executar enquanto tenta for menor ou igual que 3, então nesse caso, mesmo que o usuário acerta, ainda teremos que 3 <= 3, ou seja, teremos mais uma execução

Para corrigir isso, como tenta começa em 0, podemos dizer que while ( tenta < 3), dessa forma 3 não é menor que 3, e teremos apenas uma execução quando acertar :)

A segunda questão é essa:

tenta=logadeNovo() + 1;

Veja que você esta dizendo que tenta equivale ao retorno da função + 1, o que não faz muito sentido :)

Então precisamos separar:

  1. Aumentamos a quantidade de tentativas:

    tenta = tenta + 1;
    alert("Login Inválido. Tente Novamente");
  2. Executamos a função novamente

    tenta = tenta + 1;
    alert("Login Inválido. Tente Novamente");
    logaDeNovo()

    E uma última observação em relação a função logaDeNovo(), veja que você fazendo:

    
     var loginInformado = prompt("Informe seu login");
     var senhaInformada = prompt("Informe sua senha");
    
     function logadeNovo(){  
    
         var loginInformado = prompt("Informe seu login");

    Esse loginInformado dentro da função logaDeNovo é totalmente diferente do loginInformado que está no começo do nosso programa, quando utilizamos a palavra var estamos definido uma nova variável, no caso do seu programa queremos apenas mudar o valor, então faríamos:

    function logadeNovo(){  
        loginInformado = prompt("Informe seu login");
        senhaInformada = prompt("Informe sua senha");
    }

Conseguiu compreender? Qualquer coisa estou a disposição :)

Abraços e Bons Estudos!

Obrigado!!