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

[Bug] Meu código não funciona

Quando eu digito o primeiro número, funciona normalmente. Porém, quando eu digito o segundo número ou um número errado, o programa exibe a mensagem de erro duas vezes. Vasculhei o programa inteiro e não consigo achar onde errei de jeito nenhum.

<meta charset="UTF-8">

<input/>

<button>Compare com meu segredo</button>

<script>
    var segredos = [11,22];

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



    function verifica() {

        var achou = false;

        for(var posicao = 0 ; posicao < segredos.length ; posicao++) {
            if(input.value == segredos[posicao]) {
                        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>
2 respostas
solução!

Bom dia Enzo! Tudo bem com você?

O comportamento apresentado está acontecendo devido ao alert("você errou") está dentro do loop for, fazendo com que a mensagem de erro seja apresentada a cada iteração. Para corrigir esse comportamento devemos mover o alert("você errou") para fora do loop for. Basta seguir os passos apresentados abaixo:

  • Abra o seu projeto
  • Selecione da linha if (achou == false) até a linha input.focus();
  • Recorte o trecho selecionado
  • Clique após a penúltima chave (}) presente no código
  • Cole o código que foi recortado
  • Salve o arquivo, e abra-o novamente no navegador
  • Deixo abaixo um GIF apresentando a execução dos passos listados acima: GIF apresentando a execução dos passos listados anteriormente

Deixo abaixo o código com a correção aplicada

<meta charset="UTF-8">
<input />
<button>Compare com meu segredo</button>
<script>
    var segredos = [11, 22];
    var input = document.querySelector("input");
    input.focus();
    function verifica() {
        var achou = false;
        for (var posicao = 0; posicao < segredos.length; posicao++) {
            if (input.value == segredos[posicao]) {
                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>

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Corrigi aqui e funcionou! Muito obrigado!