Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com um código javascript

<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() {

        var achou = false;

        for (var i = 0; i < segredos.lenght; i++) {

            if (segredos[i] == input.valueu) {
                achou = true;
                break;
            }
    }

        if (achou == true) {

            alert("Você acertou :D");

        }
        else {

            alert("Você errou");

        }
    }

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

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

</script>

Toda vez que inicializo o código ele apenas fala que eu errei, não importa se eu coloquei o numero do array ou não, alguém sabe me dizer o que está errado? Alías, a primeira videoaula do capitulo 9 do curso Logicas de programação 1 : Os primeiros programas com JavaScript e HTML ficou extremamente corrida, não consegui entender quase nada, podia ter sido feito com mais calma.

2 respostas

É isso que você quer?

<meta charset="UTF-8" />
<input type="text" id="tentativa" />
<button> Compare com o meu segredo </button>

<script>

    var segredos = [5, 7, 10, 2];
    var valor = document.querySelector("#tentativa");

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

    function verifica() {

    var achou = false;

    for(var i = 0; i < segredos.length; i++) {
      if (valor.value == segredos[i]) {
        achou = true
        console.log('asd')
        break
      }
    }

    if (achou == true) alert('Voce acertou :D')
    else alert('Voce errou :(')

    }

</script>
solução!

O código que você passou está todo certo João, você só precisa colocar o reset do input dentro da função, que você colocou fora nesse exemplo. Parte do seu código:

//...
        }
        else {

            alert("Você errou");

        }
    }

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

Correção:

//...
        }
        else {

            alert("Você errou");

        }

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

O problema disso é que o programa praticamente está ignorando o que está digitado no seu input ao digitar e falando que independente do que está ali ele é um espaço vazio e depois executando a função para ver se o input é ou não parte dos segredos, colocando ele dentro da função no final o programa vai verificar primeiro o que está escrito e depois alterar para em branco para você tentar de novo