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

Alert com erro não para de aparecer

Independente do número colocado o código mostra mensagem de erro e não sai mais

<input type="text" id="input">
<button onclick="verifica()">compare com o segredo</button>

<script>
    //var segredo = Math.round(Math.random()*10);
    var segredos = [5, 7, 10 ,2];

    var input = document.getElementById('input');
    input.focus();

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

            if (input.value == segredos[posicao]) {
            alert('vc acertou')
            break;
            } else {
            alert( 'errou')
            }

        }



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


</script>
4 respostas

Bom dia!

Fiz um pequeno ajuste no seu código.

<input type="text" id="input">
<button onclick="verifica()">compare com o segredo</button>

<script>
    //var segredo = Math.round(Math.random()*10);
    var segredos = [5, 7, 10 ,2];

    var input = document.getElementById('input');
    input.focus();

    function verifica() {
        for (var posicao = 0; posicao<segredos.length; posicao++) {
            if (input.value == segredos[posicao]) {
                alert('vc acertou');
                input.value = '';
                input.focus()
                return;
            }
        }
        alert( 'errou')
        input.value = '';
        input.focus()
    }

</script>

Troquei o break por return, e caso não tenha acertado o valor, somente ao final do loop é que será apresentada a mensagem.

Bons estudos!

solução!

Oi João,

O alert de erro está no else e toda vez que o número for diferente irá entrar no else e exibir o alert, tente retirar o alert de erro do for e mostrar ele somente se você não acertou, pode ser da forma o Thiago mostrou ou com alguma variável de controle, por exemplo:

var erro = true;  // fora do FOR

if (input.value == segredos[posicao]) {
   alert('vc acertou');
   erro = false;
    break;
}


// e fora do for um if com o alerta de erro

if ( erro ) {
    alert('errou')
}

Obrigado pelas respostas. Funcionou agora!

Bela resposta Guilherme

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software