Realmente, fiz o teste aqui e acontece o seguinte:
Se você erra a 1º tentativa, mesmo que acerte na 2º o seu sistema vai considerar como errado.
Acontece que ele vai checar se o login e senha são iguais, porem seu sistema não muda ele depois da primeira vez então sempre vai dar errado se errou na primeira.
Colocando a alteração de variável dentro do while (que mencionei no post anterior) até tenta arrumar isso, porem o while continua repetindo e pedindo a senha denovo e denovo... até inevitavelmente acabarem as tentativas.
Então o ideal é realmente seguir a lógica do exemplo com o while como principal ao invés do if como nesse caso.
<meta charset="UTF-8">
<script>
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 faço o gasto de todas as tentativas para sair do loop. Lá embaixo vai incrementar + 1!
} else {
if (tentativaAtual == 3) {
alert("Número permitido de tentativas ultrapassado!");
} else {
alert("Login inválido. Tente novamente");
}
}
// vai para a próxima tentativa
tentativaAtual = tentativaAtual +1
}
</script>
Na minha tentativa o código também ficou meio estranho e com uns bugs, esse exercício foi realmente desafiador hahaha