1
resposta

Só quando eu coloco o número 5 aparece que eu acertei

quando eu coloco o numero 5 aparece que eu acertei, mas quando eu coloco ou 7, ou 10, ou 2 aparece que eu errei

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredos = [5,7,10,2];

    var input = document.querySelector("input");
    input.focus();

    function verifica()
    {

        for(var posicao = 0; posicao < 4; posicao++)
        {
            if(input.value == segredos[posicao])
            {
                alert("você acertou");
            } else
            {
                alert("você errou");
            }

            input.value = "";
            input.focus();
        }
    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>
1 resposta

Sua instrução input.value = ""; está "dentro do 'for'", então a cada passo do 'for' para incrementar o valor da variável 'posição', o input.value fica valendo "nada". No primeiro passo, input.value corresponde ao número que digitou. Se foi 5, ele vai comparar com o primeiro valor armazenado na variável 'segredos', que é 5, então diz que você acertou. Se digita 7, no primeiro passo do 'for', ele compara 7 com o 5 armazenado em 'segredos', o que dá 'errado'. No segundo passo do 'for', o input.value passa a ser "nada", e comparado com o segundo valor de 'segredos', que é 7, vai dar "erro". Tem que tirar o input.value e o input.focus para fora da function verifica().