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

Como fazer o botão acionar duas funções diferentes

Ola amigos!

Fiz os testes separadamente dessas funções e as duas estão funcionando. Entretanto quando uso & no comando, nenhuma função é acionada, se ponho um comando do onclick abaixo do outro, só o debaixo funciona. Como posso proceder? Colo abaixo o código Obrigado

<meta charset="UTF-8">
<input type = "text" id="chutes"/>
<input type = "submit" value="Mega Sena - Digite 6 números de 1 a 60 e confira o resultado!" id="compare"/>

<script>

var pulalinha = function(){ 
    document.write("<br>");};
var mostra = function(frase){
    document.write(frase);
    pulalinha();
};



var numerosSorteados = [];
var sorteio = function (){
    for(var numeroDoComputador = 0 ; numeroDoComputador<6; numeroDoComputador++){
        var sorteio = Math.round(Math.random()*60);
        numerosSorteados.push(sorteio);
        console.log(sorteio);
    }
};


var guardaChutes = [];
var CaixaDoNumero = document.getElementById("chutes");
var Numerodousuario = function(){
    guardaChutes.push(CaixaDoNumero.value);
    console.log(CaixaDoNumero.value);        

};

var botao = document.getElementById("compare");

botao.onclick = Numerodousuario;
botao.onclick = sorteio;


</script>
9 respostas

Oi Daniel,

Quando você atribui as 2 funções para o onclick, ele não coloca 2 funções no evento, e sim substitui. Você está atribuindo :). Você pode criar uma terceira função que chama as 2.

Olá Daniel,

Lembre-se de que você está definindo os valores e eles sao executados na ordem em que você escreve. Então,

botao.onclick = Numerodousuario;
botao.onclick = sorteio;

Ao fazer isso, você estará sobrescrevendo o valor da primeira linha. Por isso, só o segundo irá funcionar.

Ah! E mais um detalhe:

Se você quiser fazer com que as duas funções sejam executadas. Você pode criar uma terceira função executaOsDois que chama as duas funções iniciais.

E então você faz:

botao.onclick  = executaOsDois;

**O nome da função é só para dar exemplo, sempre escolha nomes que fazem mais sentido para sua aplicação.

Alberto! Construi uma variável chamando os dois valores, mas continua funcionando só o último

<meta charset="UTF-8">
<input type = "text" id="chutes"/>
<input type = "submit" value="Mega Sena - Digite 6 números de 1 a 60 e confira o resultado!" id="compare"/>

<script>

var pulalinha = function(){ 
    document.write("<br>");};
var mostra = function(frase){
    document.write(frase);
    pulalinha();
};



var numerosSorteados = [];
var sorteio = function (){
    for(var numeroDoComputador = 0 ; numeroDoComputador<6; numeroDoComputador++){
        var sorteio = Math.round(Math.random()*60);
        numerosSorteados.push(sorteio);
        console.log(sorteio);
    }
};


var guardaChutes = [];
var CaixaDoNumero = document.getElementById("chutes");
var Numerodousuario = function(){
    guardaChutes.push(CaixaDoNumero.value);
    console.log(CaixaDoNumero.value);        

};


var botao = document.getElementById("compare");
var confere = (sorteio && Numerodousuario); 
botao.onclick = confere; 





</script>

Daniel, cuidado ao inserir o código no post. O correto seria substituir o "insira seu código aqui" pelo seu código.

Assim, ele aparece formatado corretamente no post.

ps: eu editei seu post formatado agora (:

solução!

Então Daniel, A sintaxe de como você colocou não faz muito sentido.

Você pode criar a função assim e depois atribuir essa função no onClick:

var executaOsDois = function(){
   sorteio();
   Numerodousuario();        
};

...

botao.onclick  = executaOsDois;

Ficou mais claro?

Olá Daniel,

tente

var confere = function(){
      sorteio();
      Numerodousuario();
}

botao.onclick = confere;

Muito obrigado Rômulo e Lucas !!

Olá! Há um novo curso de lógica que substitui o antigo. É o mesmo conteúdo com apresentação diferente e mais de 100 exercícios.

https://www.alura.com.br/curso-online-logica-programacao-javascript-html

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