"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que a função onclick do JavaScript é acionada prematuramente quando parênteses são usados?

Por que a função onclick do JavaScript é acionada prematuramente quando parênteses são usados?

Publicado em 2024-11-10
Navegar:975

Why Does JavaScript onclick Function Trigger Prematurely When Parentheses Are Used?

Função JavaScript onclick acionada prematuramente

Ao criar um link com estética semelhante a uma tag , mas destinado a executar uma função ao clicar , os usuários podem encontrar um cenário em que a função é chamada erroneamente durante o carregamento da página. Isso impede que o evento de clique desejado funcione corretamente.

A armadilha comum é o uso indevido de parênteses ao atribuir o atributo onclick. Em vez de sentNode.onclick = secondFunction(), que executa imediatamente a função, a sintaxe correta é sentNode.onclick = secondFunction. Isto atribui uma referência à função, que só será executada no evento click.

function startFunction() {
  var sentNode = document.createElement('a');
  sentNode.setAttribute('href', "#");
  sentNode.setAttribute('onclick', secondFunction);
  //sentNode.onclick = secondFunction();
  sentNode.innerHTML = "Sent Items";
  //...
}

Ao omitir os parênteses, o evento onclick fica corretamente vinculado a uma referência de função e não ao resultado de sua execução, garantindo o comportamento pretendido.

Declaração de lançamento Este artigo foi reimpresso em: 1729552154 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3