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

Tela de login - javascript

não consuigo enchergar porque, o while ates de finalizar permite a menssagem do ele no seguinte codigo abaixo que simula o login de acesso:

<script>
    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

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

    var tentativas = 1;

    while (tentativas <= 3) {

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


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

                mostra("Bem-vindo ao sistema " + loginInformado);

            if (tentativas = 3) {

                    tentativas++;

            }

            } else {

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

        }


    }

         alert("Login inválido");    

</script>
4 respostas

Eu não vi a aula que você está vendo, fiz algumas modificações no código, não sei se é isso que ele deveria fazer, vale a pena dar uma olhada, deixei uns comentários para explicar o que pensei.


function pulaLinha() {

    document.write("<br>");
}

function mostra(frase) {

    document.write(frase);
    pulaLinha();
}

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

var tentativas = 1;

while (tentativas <= 3) {

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


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

        mostra("Bem-vindo ao sistema " + loginInformado);

        // Não entendi o motivo deste if abaixo
        // if (tentativas = 3) { // Esse if está fazendo uma atribuição onde testa se tentativas recebeu o valor de 3
        //     tentativas++; // Porque está incrementando se o login foi um sucesso?
        // }

        break; // Para sair do loop

    } else {

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

    }


}

// alert("Login inválido"); -- Este item seria executado independente do resultado.

Boa noite Rafael, obrigado pela ajuda, porem a ideia do algoritimo é dar 3 tentativas para o usuario efetuar o login, e apos a 3º tentativa incorreta deveria informa a menssagem, "senha invalida" apenas, não a messagem do ELSE.

solução!

Você poderia se quisesse adicionar um if dentro do else que está no while, verificando se é a terceira tentativa e disparando a mensagem "Login invalido", caso não seja disparando a mensagem "Login inválido. Tente novamente".

Algo como

else {
    if(tentativas == 3) { // Duplo igual para comparar, poderia ser == ou === o === compara tipo e valor, o == só compara valor. 
        alert("Login inválido.");
    } else {
        alert("Login inválido. Tente novamente");
    }    
    tentativas++;
}

Você ainda poderia armazenar o 3 dentro de uma variavel chamada maxTentativas, e substituir onde aparece o 3 para quando precisar aumentar o número de tentativas só mudar a variável.

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software