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

Não está funcionando

Quando vou seguindo as etapas do processo conforme a aula, chega nesta parte do código ele não funciona.

<meta charset="UTF-8">

<input />
<button>Advinhar o número</button>

<script>
var segredos = [3,5,7,9];
var input = document.querySelector("input");
input.focus();



function verifica () {
    for (var posicao = 0; posicao < 4 ; posicao++) {
        if (input.value==segredos[posicao]) {
           alert ("Você acertou");
        }
        else {
            alert ("Você errou");
        }

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

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


</script>
6 respostas

Olá Marcia, referente a sua pergunta, testei seu código e funcionou perfeitamente aqui, mas acho que sei o que pode estar acontecendo...

Se você usa o Google Chrome para testar a sua aplicação, você pode ter clicado sem querer na opção de "Impedir que esta página crie caixas de diálogo adicionais" que é mostrada pela função "alert". Por esse motivo não deve estar aparecendo esse alerta para você.

Tente abrir uma aba anonima e abrir o projeto novamente, ou, reiniciar seu navegador.

Essa opção foi criada nos navegadores para impedir que "espertinhos" travassem seu navegador gerando um loop de alertas e impedindo de fechar o site dos mesmos.

Caso não seja esse o seu problema, nos informe o que deveria acontecer e não está acontecendo em seu código.

Boa sorte e até mais!!

Não, o que está acontecendo é que apesar de acertar ele continua dizendo que errei, mesmo tendo acertado o número. Ele não manda a mensagem que acertei. Olhei a outra dúvida mas o problema do outro foi que ele escreveu uma palavra errada. Já repassei o código todo e não consigo ver o erro

solução!

Marcia, você esqueceu de criar a variável achou e esqueceu do break no for.

function verifica () {
    var achou = false;
    for (var posicao = 0; posicao < 4 ; posicao++) {
        if (input.value==segredos[posicao]) {
           alert ("Você acertou");
           achou = true;
            break;
            }
        }
        if (achou == false){
            alert ("Você errou");

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

Oi Márcia ! Com a ajuda dos colegas agora foi? Fico no aguardo para saber se esta tudo ok.

Há uma outra solução que elaborei aqui para você agora. Veja se acha mais fácil ou mais complicada do que eu postei no vídeo. Estou usando seu código com uma pequena alteração:

<meta charset="UTF-8">

<input />
<button>Advinhar o número</button>

<script>
var segredos = [3,5,7,9];
var input = document.querySelector("input");
input.focus();



function verifica () {
    for (var posicao = 0; posicao < 4 ; posicao++) {
        if (input.value==segredos[posicao]) {
           alert ("Você acertou");
           posicao = 4; // quando acerta, coloca um valor que faz o loop parar
        }
        else {
            alert ("Você errou");
        }

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

var botao = document.querySelector("button");
botao.onclick = verifica;
</script>

A ideia é a seguinte. Quando você acertar, você vai mudar a variável posicao, não importa qual valor esteja, para um valor que faça com que o loop termine. No caso, atribuí o valor 4.

O que achou essa? É outra forma de se fazer.

Márcia, vou fechar o post, se ainda tiver dúvida pode perguntar de novo. :)

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