Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

"Você errou" aparece logo quando roda o programa no Chrome.

<meta charset="utf-8">

<input/>

<button>Compare com meu segredo</button>

<script>

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

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

    var achou = false;


    function compara() {

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

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

            alert("Você acertou");
            achou == true;
            break;
        }
        } 
        input.value = "";
        input.focus();


    }

        if(achou == false) {

        alert("Você errou");
    }



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




</script>
1 resposta
solução!

Tente dessa forma:

<script>
    var segredos = [2,5,7,10];
    var input = document.querySelector("input");

    input.focus();

    function compara() {
        //Variável redefinida toda vez que a função é chamada
        var achou = false;

        for(var posicao = 0; posicao < segredos.length; posicao++) {
            if(input.value == segredos[posicao]) {
                alert("Você acertou");

                //Correção de atribuição de valor para a variável
                achou = true;
                break;
            } 
        } 

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

        // Alerta acionado somente quando a função é executada
        if(achou == false) {
            alert("Você errou");
         }
    }

    var button = document.querySelector("button");
    button.onclick = compara;
</script>

O alerta era acionado porque estava fora do corpo da função e executava junto com o carregamento do script.