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

Armazendo muitos dados (nada é executado)

Boa tarde, posso estar deixando passar algo, porém comparando está igual ao do instrutor. Por algum motivo, ao clicar no botão "Compare com o meu segredo" nada é executado.

<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 posicao = 0; posicao < segredos.lenght; posicao++){
            if(segredos[posicao] == input.value){
                alert('Você acertou!');
                achou = true;
                break;
            }
        }
        if (achou = false){
            alert('Você errou!');
        }

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

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

</script>
6 respostas

Olá Thiago,

O problema está no seguinte trecho de código:

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

Você abriu uma tag input e não fechou e seu JavaScript está buscando pela tag input e não button por isso não funciona, tenta ajudar da seguinte maneira:

<input type="button" value="Compare com o meu segredo." />

nesse seu exemplo não deveria ser ' == ' em vez de ' = '

  if (achou = false){
       alert('Você errou!');
  }

ficando assim :

  if (achou == false){
       alert('Você errou!');
  }

É importante verificar se o input realmente esta sendo atribuido a sua variavel input, talvez esse seu document.querySelector pode não estar funcionando como esperado

Oque o Denis indicou como erro, não acredito que esteja errado,

A tag "input" não precisa ser fechada, e se você não passar parâmetros ela uso o default que o campo de texto.

E o uso da tag button , também esta correto.

Boa tarde a todos, como falei, meu código está semelhante ao do instrutor. Testando o que você compentou, fazendo desta forma some a caixa de texto onde deve ser inserido o valor.

Bruno, eu havia colocado o '==' ao invés de '='. porém desta forma ele não retorna 'achou=True' e sempre considera resultado como errado, mesmo colocando valor certo, ele já pula para 'achou=False'.

solução!

Thiago , identifiquei o erro,

dentro do seu FOR, a palavra " length", esta escrita errada.

mas o if, realmente deve ser feito com " == "

fiz um exemplo aqui , que você pode testar

https://jsfiddle.net/w27gvk4n/

Putz cara, tenho até vergonha de dizer que imaginei que fosse isso, mas pra mim estava escrito certo... hahahahaha

Valeu!