Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Programa gera erros ao apertar o botão

Olá, ao utilizar o botão um erro é gerado, e eu não estou conseguindo achar onde está o erro no código. Ele gera quatro números aleatórios e deixa um quadro input para o usuário tentar adivinhar um desses números.

<meta charset="UTF-8">

<h1>Digite um número: 0-10</h1>
<input/>
<button>Comparar com segredo</button>


<script>

function segredos() {

    var segredo1 = Math.round(Math.random()*10);
    var segredo2 = Math.round(Math.random()*10);
    var segredo3 = Math.round(Math.random()*10);
     var segredo4 = Math.round(Math.random()*10);
     while (segredo1==segredo2 ){  
        var segredo2 = Math.round(Math.random()*10);
    }
    while (segredo3==segredo1 || segredo3==segredo2) {
        var segredo3 = Math.round(Math.random()*10);
    }
    while (segredo4==segredo1 || segredo4==segredo2 || segredo4==segredo3){
        var segredo4 = Math.round(Math.random()*10);
    }
    return  [segredo1,segredo2,segredo3,segredo4];

 }

function verifica() {
    if(contador<3) {
        for(var contadorArray = 0;contadorArray < combinacao.length;contadorArray++) {
            if (input.value == combinacao[contadorArray]) {
                alert("Você acertou!!");
                contador=0;
                var combinacao = segredos();
                console.log(combinacao);
                break;
            }
        }

        if(input.value != combinacao[contadorArray]) {
             if(contador<3){
            alert("Você errou, tente novamente");
            contador++;
            }
            if (contador==3){
                alert("Número máximo de tentativas atingidas.");
                contador=0;
                var combinacao = segredos();
                console.log(combinacao);
            } 
        }
        input.value="";
        input.focus();
    } 
}

var input = document.querySelector("input");
var combinacao= segredos();
input.focus();
console.log(combinacao);
var contador=0;

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


</script>
1 resposta
solução!

Boa noite! Ao clicar no botão nada esta sendo chamado, para que seja chamado altere o html do botão para:

<button onclick="verifica()">Comparar com segredo</button>

Exclua as linha abaixo:

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

Dentro da função verifica, você esta criando uma variável local (2x) com nome de 'combinação', aí que está o erro:

var combinacao = segredos();

mude para :

combinacao = segredos();

Outro ponto. Após o acerto você está usando 'break' isto só sai do loop for então o código testará o if seguinte. Use 'return' para sair da função.