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

E se a função a ser chamada no clique tiver parametros?

Na aula do professor Flávio, ele executa o button.onclick = verifica, porque ela só executa a função verifica depois do aperto do botão, mas e no caso se eu substituisse a função verifica por escreveTexto( texto ), ou seja, uma função com parametros obrigatórios? Como eu faria para executar a função escreveTexto depois de clicar no botão?

2 respostas
solução!

Olá, Erick, tudo bem?

Sua pergunta é bem interessante!

A resposta é que a função que guardamos no evento onclick na verdade não pode conter parâmetros criados por nós. Na verdade, as funções que são chamadas no disparar de eventos já vêm com um parâmetro "secreto", que carrega as informações daquele evento em si. Isso é algo um pouco mais avançado, mas veja esse exemplo:

<meta charset="UTF-8">

<button>Teste</button>

<script>

    var button = document.querySelector("button");  // capturamos o botão e colocamos na variável "button"

    button.onclick = teste;  // guardamos a função "teste" no disparar do evento "onclick"

    function teste(event) {  // funções de chamada de evento podem receber um parâmetro por padrão.
        console.log(event);
    }

</script>

Guardamos no evento de clique do botão a referência da função teste. E na sua declaração, ela recebe um parâmetro que já é esperado pelo javascript, e que é opcional. Normalmente chamamos esse parâmetro de event, e ele carrega as informações do evento disparado. Ao clicar no botão, executamos console.log(event) e vemos isso no console:

Print do console do Chrome com o seguinte texto em itálico: "PointerEvent {isTrusted: true, pointerId: 1, width: 1, height: 1, pressure: 0, …}".

E esse parâmetro que carrega as informações do evento vale para qualquer evento do javascript.

Você pode ler mais sobre como lidar com eventos (Event handling) na documentação (a página está em inglês, você pode usar o navegador para traduzi-la). Nessa página, é utilizada a função addEventListener em vez da sintaxe button.onclick = nomeDaFuncao.

Espero ter ajudado! Abraços e bons estudos :)

Caso esta resposta tenha resolvido sua dúvida, por favor, marque como solucionada ✓. Bons Estudos!

A resposta foi excelente! Me esclareceu bem, obrigado!