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

Dúvida com relação a impressão da mensagem "Login Inválido, tente novamente."

Boa tarde, O código desta atividade foi desenvolvido da seguinte forma:

<meta charset="UTF-8">
<script>
    function pulaLinha() {

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

    function mostra(frase) {

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

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

    var contador = 1;
    var contadorMax = 3

    while(contador <= contadorMax){

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

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

            mostra("Bem-vindo ao sistema " + loginInformado);
            break
        }
        else {

            mostra("Login inválido. Tente novamente");
        }
        contador++
    }
</script>

Ele funciona corretamente, porém, quanto o usuário entra com a senha errada ao invés de imprimir a mensagem imediatamente "Login inválido. Tente novamente" ele não imprime nada, somente depois quando o usuário termina com falha nas três (3) tentativas que é impresso a frase "Login inválido. Tente novamente" três vezes de uma vez, gostaria de saber se cometi algum erro e como consertá-lo.

Grato desde ja, Felipe.

4 respostas

Felipe, testei seu código aqui e exibiu as mensagens corretamente.

Você esqueceu alguns ponto e vírgula (;) em:

 var contadorMax = 3

e em:

break

Talvez seu navegador esteja parando nesses pontos. Adiciona eles e tenta de novo. Dá um retorno pra saber se funcionou.

Abraço.

Manoel de Souza Lima, agradeço pela ajuda da correção dos ; (ponto e vírgula) que esqueci de colocar no código, ainda sim o problema permanece, e a dúvida deste erro ainda me confunde porque já reescrevi esse código 4 vezes. Abraço.

solução!

Oi Felipe, eu sei o que esta acontecendo. A lógica do seu código esta perfeita, no entanto, nesse curso de lógica de programação, usamos apenas o document.write para escrever na tela e ele possui limitações.

Se você trocar essa linha:

  mostra("Login inválido. Tente novamente");

Por

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

Vai funcionar como o esperado. Teste e veja. Daí, você deverá estar se perguntado. Qual a razão disso?

É que quando escrevermos com document.write. a saída na tela será efeita quando seu código chegar ao fim. Como você esta em um loop e faz document.write o texto não será exibido, só quando você sair do loop. É por isso que colocando o alert seu código funciona, porque você não usou document.write.

Eu alterei o exercício para fazer uso do alert, eu mesmo quando elaborei esse exercício esqueci dessa limitação do document.write.

Não se preocupe, quando você ir avançado na programação e for aprender a linguagem JavaScript em outros cursos da Alura, verá como fazer a escrita de outra forma, um pouco mais complexa, mas até lá você terá criado sinapses para compreender o que esta acontecendo.

Espero encontrá-lo em médio prazo nos cursos avançados de JavaScript, caso você tem curtido essa linguagem. Mas lembre-se, o foco aqui é lógica e a lógica do seu código esta perfeito.

Consegui tirar sua dúvida? Aguardo seu retorno.

Muito obrigado pelo esclarecimento professor Flavio, agora sim o código reage da maneira como esperava. Em relação ao JavaScript sem dúvidas irei fazer esse curso, estou muito motivado a continuar meu longo caminha até atingir o cargo de programador em alguma empresa.