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

Função esta sendo executada sem ser chamada

Ao carregar a página com o script abaixo a função jogar, que era pra ser executada "onclick" é executada automaticamente. O que esta causando isso?

<meta charset="UTF-8">
<h1>Loteria</h1>
<h2>Digite 6 números para jogar</h2>

<script>

    var sorteados = [];
    for(var i = 0; i < 6; i++) { // Repito 6 vezes
        document.write("<input type='text' size='1' id='num" + i + "'/>"); // Cria os 6 campos se jogar
        var sugestao = Math.round(Math.random() * 59 + 1); // Escolhe um numero ao acaso
        while (sorteados.indexOf(sugestao) >= 0) {  // Enquanto o numero já existir, escolher outro
            sugestao = Math.round(Math.random() * 59 + 1);
        }
        sorteados.push(sugestao); // adicionar este numero aos números sorteados
    }
    sorteados.sort(function(a, b){return a-b}); // ordena os números sorteados
    console.log(sorteados);
    document.write("<input type='submit' value='Jogar' id='escolher'/>"); // Cria Botão

    var jogar = function(sorteados) {
        var escolhidos = [];
        for(var a = 0; a < 6; a++) {
            var n = a.toString(); //converte em texto
            escolhidos[a] = parseInt(document.getElementById("num" + n).value); // pega números digitados
        }
        console.log(escolhidos);

        var acertos = 0;
        for(b = 0; b < 6; b++) {
            for(c = 0; c < 6; c++) {
                if(sorteados === escolhidos){
                    acertos++
                }
            }
        }
        document.write("Você jogou os números " + escolhidos + "<br>");
        document.write("Os números sorteados foram " + sorteados + "<br>");
        document.write("Você acertou " + acertos + " número(s)"); 
    }

    var botao = document.getElementById("escolher"); 
    botao.onclick = jogar(sorteados);

</script>
4 respostas

Luciano, o jeito mais fácil de resolver seu problema é atribuir um novo evento ao botão que tem a ação de chamar a sua função.

Ex: botao.onclick = function() { jogar(sorteados); };

solução!

Oi Luciano,

Ali no OnClick, você deve passar apenas o nome do método. Como vc está abrindo parênteses, ele está executando a função:

botao.onclick = jogar;

Funcionou?

Rudson e Mauricio, retirei os parenteses e funcionou. Obrigado pela dica!!!

Você jogou os números 2,3,4,5,6,7 Os números sorteados foram [object MouseEvent] Você acertou 0 número(s)

Por quê retornou [object MouseEvent]

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