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

botaoClicado e botaoClicado()

Na penúltima aula, ao criar um evento para o botão clicado percebi que quando deixo "botaoClicado()" o alert aparece logo no início. Já quando coloco apenas botaoClicado, aparece quando clicados no botão (do jeito que queríamos). Porque isso ocorre? Alguém poderia me explicar? mesmo com "()" não era para a função ser chamada apenas quando se clica no botão?

Segue o meu código:

<meta charset="UTF-8">

<input type = "texet"id = "numero"/>
<input type = "submit" value = "Compare com o meu segredo" id = "adivinhar"/>


<script>
var numeroDigitado = document.getElementById("numero");


var botaoClicado = function() {
    alert(numeroDigitado.value);
}

var botaoAdivinhar = document.getElementById("adivinhar");
botaoAdivinhar.onclick = botaoClicado(); /* DESSA FORMA APARECE O ALERT NO COMEÇO, MESMO SEM CLICAR NO BOTÃO. JÁ QUANDO EU TIRO O "()", AI SIM SÓ APARECE QUANDO EU CLICO NO BOTÃO. QUE LOUCURA É ESSA? MESMO COM "()" NÃO ERA PARA APARECER APENAS QUANDO O BOTÃO É CLICADO??? */


</script>
3 respostas
solução!

Oi Lucas! Isso ocorre pelo fato de que quando vc escreve botãoClicado() vc está chamando a função, e no caso passando apenas botaoClicado vc está passando a referencia para a função. Nessa linha de código que vc colocou:

botaoAdivinhar.onclick = botaoClicado();

o botaoAdicinha.onclick recebe o retorno da função botaoClicado, ou seja, o javascript executa essa função e atribui ao 'onclick' o retorno dela, entende?

Quando vc passa apenas 'botaoClicado', aí sim ele não executa a função e passa somente a sua referencia que fará com que a função seja executada quando o botão for clicado!

Abraços!

Ótimo, muito obrigado. Respondeu minha dúvida!

Opa, estamos aí pra isso (: Se realmente respondi sua dúvida marca minha resposta como solução por favor! Abraço Lucas!