Olá Luis, tudo bem? Espero que sim!
Ao analisar o código, identifiquei algumas possíveis razões para o comportamento diferente:
Erro de digitação: No trechoinpu.focus()
, parece haver um erro de digitação. Deve ser input.focus()
para focar corretamente o campo de texto após cada tentativa.
Lógica de verificação: O código atual verifica se o número inserido pelo usuário corresponde a cada um dos segredos individualmente. No entanto, ele exibirá uma mensagem de "VOCE ERROU" para cada segredo que não corresponda, o que pode não ser o comportamento desejado. Se o objetivo é exibir uma mensagem de erro apenas após todas as tentativas, é necessário ajustar a lógica de verificação.
Aqui está o código corrigido:
<meta charset="UTF-8" />
<input type="text" />
<button>Compare com o meu segredo</button>
<script>
var segredos = [5, 7, 10, 2]
var input = document.querySelector('input')
input.focus()
function verifica() {
var acertou = false;
for (var posicao = 0; posicao < 4; posicao++) {
if (input.value == segredos[posicao]) {
acertou = true;
break;
}
}
if (acertou) {
alert('VOCE ACERTOU');
} else {
alert('VOCE ERROU');
}
input.value = '';
input.focus();
}
var button = document.querySelector('button')
button.onclick = verifica;
</script>
Nessa correção, foi adicionada uma variável booleana acertou para verificar se o usuário acertou algum segredo. A cada iteração do loop, ela é definida como true caso o número inserido corresponda a algum segredo. Após o término do loop, uma única mensagem é exibida com base no valor de acertou.
Espero ter ajudado!
Caso tenha dúvidas, fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!