1
resposta

Minha Solução.

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

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

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

    if (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada) {
        alert("Bem-vindo ao sistema, " + loginInformado);
    }
    while (contador != 0) {
        alert("Login inválido. Tente novamente. Você só tem mais " + contador + " tentativas.");
        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");
        contador--;
    }
    document.write("Suas tentativas acabaram!");

</script>
1 resposta

A lógica está invertida. o if tem que estar dentro do while. Se são duas tentativas, trocaria o contador != 0 por contador >= 1. Talvez se fizer as anotações dos passos fica mais simples o princípio da lógica.

  • fazer um loop para receber até duas tentativas inválidas
  • receber o login no while
  • perguntar se é válido
  • retornar ok se válido
  • retornar msg não se inválido e contador --