Opa José,
Como estamos trabalhando com um input
e não um alert
o ideal é que não tenha nenhum loop, veja:
O usuário digita algum campo errado, nesse mesmo momento seu código irá repetir novamente, sem dar tempo do usuário digitar algo, e continuará errado, até que a execução dos alerts
tenham finalizado :)
Então na verdade queremos apenas executar o código:
<script>
var loginCadastrado = "alura";
var senhaCadastrada = "alura321";
var maximoTentativas = 3;
var tentativaAtual = 1;
var inputNome = document.getElementById("nome");
inputNome.focus();
var inputSenha = document.getElementById("senha");
function login(){
if(inputNome.value == loginCadastrado && inputSenha.value == senhaCadastrada){
mostra("Seja Bem-vindo(a) ao sistema " + inputNome.value + ".");
}
else if(tentativaAtual == maximoTentativas){
alert("Número de tentativas ultrapassado." );
button.disabled = true;
}
else {
alert("login ou senha inválido. Tente novamente.");
tentativaAtual++;
}
inputNome.value = "";
inputNome.focus();
inputSenha.value = "";
}
var button = document.querySelector("button");
button.onclick = login;
</script>
`
Aqui umas dicas:
Quando temos um else
e depois um outro if
, provavelmente podemos substituir por um else if
com uma outra condição, dessa forma, se não bater a condição do if
, é tentado com o else if
e caso não funcione com nenhuma ai realmente vamos para o else
, mas dessa forma o nosso código fica mais fácil de ser lido :)
Ali eu coloquei um button.disabled = true
que é uma coisa que podemos fazer no javascript
que é bloquear um botão, dessa forma após as 3 tentativas teremos um efeito visual mais legal!
Conseguiu Compreender?
Abraços!