1
resposta

Meia hora

Meia hora procurando erro, e não encontro, mas ele só acha meu número se tiver na primeira casa do array. Onde tá o erro?

<meta charset="UTF-8">
<button>Clique aqui</button>
<input/>

<script>

    var segredos = [5,7,10,2];
    var input = document.querySelector('input');
    input.focus();
    var button = document.querySelector('button');

    function verifica() {

        var achou = false;
        for(var posicao = 0; posicao < segredos.length; posicao++) {

        if(input.value == segredos[posicao]) {

            alert("acertou");
            achou = true;
            break;

        }
        if(achou == false) {

            alert('vc errou');

        }

        input.value = "";


    }
}

    button.onclick = verifica;

   </script>
1 resposta

Acho que seu "for" tem que terminar logo antes do segundo "if", mudando a chave do fim para antes do segundo if. Porque senão seu contador logo na primeira rodada já vai passar pela mensagem de erro. Tem que contar todas as tentativas e testar se é positivo, pra só depois de todas as tentativas chegar na mensagem de erro.

    function verifica() {

        var achou = false;
        for(var posicao = 0; posicao < segredos.length; posicao++) {

        if(input.value == segredos[posicao]) {

            alert("acertou");
            achou = true;
            break;

            }
        }

        if(achou == false) {

            alert('vc errou');

            }

        input.value = "";


        }


    button.onclick = verifica;

   </script>