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

Tentando fazer o exercício usando o WHILE ao invés do FOR!

Com o WHILE sendo usado, o programa só aceita quando a primeira tentativa esta certa. Quando é as demais tentativas ou algum erro o navegador trava e não consigo achar o erro!

<meta charset = "UTF-8">

<input/>
<button>Descubra o número secreto!</button>

<script>

var segredos = [5,2,6,9];

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


function verifica() {

    var posicao = 0
    var achou = false

    while (posicao < segredos.length) {

        if ( input.value == segredos[posicao]) {
            alert("Você ACERTOU");
            achou = true
            break;
            posicao++;
        } 
    }
        if (achou = false ) {

        alert("Você ERROU");
    }
    }

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



button.onclick = verifica;

</script>
2 respostas
solução!

Olá Lucas,

Isso acontece porque o o "posicao++" está dentro desse "if":

if ( input.value == segredos[posicao]) {

            alert("Você ACERTOU");
            achou = true;
            break;
            posicao++;
        }

E isso faz com que o "posicao++" só seja utilizado caso esse "if" seja verdadeiro, ou seja, o "posicao++" só irá contar caso o usuário acerte o segredo, mas na verdade você quer que o loop aconteça nos dois casos, se o usuário acertar ou errar.

Então o "posicao++" tem que ficar fora desse "if" mas dentro do "while". Assim ele irá checar se a condição é verdadeira, se não for o "if" será ignorado e ainda assim o "posicao++" irá ser utilizado, indo para a próxima casa do vetor e assim por diante.

while (posicao < segredos.length) {

        if ( input.value == segredos[posicao]) {

            alert("Você ACERTOU");
            achou = true;
            break;

        } 

        posicao++;

    }

=================================================

if (achou = false ) {

        alert("Você ERROU");
    }

Aqui foi um pequeno erro de sinal.

o "=" na verdade deve ser dois "==", o "=" é de atribuição e o "==" é de comparação.

Caso tenha alguma dificuldade eu deixei o seu código script pronto:

var segredos = [5,2,6,9];

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


function verifica() {

    var posicao = 0
    var achou = false

    while (posicao < segredos.length) {

        if ( input.value == segredos[posicao]) {
            alert("Você ACERTOU");
            achou = true
            break;

        } 
        posicao++;
    }
        if (achou == false ) {

        alert("Você ERROU");
    }
    }

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



button.onclick = verifica;

Boa Marcus!!! É isso mesmo!!