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

código igual o da aula mas só aparece errou...

<!DOCTYPE html 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("acertou")
        } else{alert("errou")}
        input.value="";
        input.focus();
     }
    }
     var button= document.querySelector("button");
    button.onclick= verifica;

</script>
4 respostas

Oi, Gabriel! Tudo bem com você?

Com essa lógica a forma mais eficiente para trabalharmos com interrupção é utilizar o break. O que acontece no seu código é que o seu programa realiza a iteração e informa todos os números que você errou e o que você acertou.

De forma bem simples, é possível inserir um break após o "acertou". No entanto o programa vai continuar iterando e verificando se os outros números são os corretos. Vou deixar aqui um exemplo:

<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("acertou")
        break;
        } else{
           alert("errou")

            }
        }

        input.value="";
        input.focus();
    }
     var button= document.querySelector("button");
    button.onclick= verifica;

</script>

No entanto o instrutor utiliza uma lógica bem completa e interessante nesta aula: Link para aula "Armazenando muitos dados".

Fico à disposição.

Um abraço e bons estudos!

mas o problema que aqui apenas o 5 aparece como "acertou" e o resto n...

solução!

Oi, Gabriel!

Você testou o código que eu enviei?

Nele o número teste envia um "acertou" a medida que percorre o Array. Nesse sentido, se você enviar o número 7, a saída será :"errou" e depois "acertou!".

O seu código só identifica o número 5 porque você deixou o input dentro do else:

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

Essas duas instruções precisam ficar fora da estrutura condicional para que o código funcione do jeito que você deseja.

Um abraço, Bons estudos!

hmmmm entendi, muito obrigado!!!