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

Simulando uma tela de login

Já tentei de diversas formas encerrar o loop quando o login e senha estão errados, porém ele continua interminavelmente e não consigo ver erro na lógica do código.

OBS.: Mesmo copiando e colando o código fornecido na opinião do instrutor, o loop continua.

Procurei algumas soluções aqui no fórum e as alternativas também não funcionaram... :(

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

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

    while(tentativas <= 3){    

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

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            alert("Bem-vindo ao sistema, " + loginInformado);
            break;
        } else {
            alert("Login inválido. Tente novamente.");
        }
        tentativas = tentativas++;
    }
    documento.write('Você não tem mais tentativas.');
</script>
3 respostas
solução!

Olá! O código da opinião do instrutor é esse:

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

    var maximoTentativas = 3;
    var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas) {

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

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

            alert("Bem-vindo ao sistema, " + loginInformado);

            tentativaAtual = maximoTentativas; // acertou, então foço o gasto de todas as tentativas para sair do loop. Lá embaixo vai incrementar + 1! 

        } else {

            alert("Login inválido. Tente novamente");
        }

       // vai para a próxima tentativa
        tentativaAtual = tentativaAtual +1  
    }

Ele funciona corretamente.

No seu código, você fez:

       tentativas = tentativas++;

O correto é tentativas++ apenas, ou tentativas = tentativas + 1.

Qualquer dúvida grite!

Fala Thiago, tudo bem?

seu problema está na hora que vc atribui valor em "tentativas".

o operador de incremento ++ só adiciona valor depois ou seja, vc esta sempre atribuindo o valor 1 a tentativas. Tente fazer assim:

tentativas = ++tentativas;

dessa forma o valor atribuido a tentativas será incrementado antes.

Espero ter ajudado =)

As duas soluções resolveram, obrigado.