quarta-feira, 14 de novembro de 2007

Chamadas dinâmicas de funções em JavaScript

Em alguns casos precisamos que um evento execute uma função, como definir o onclick, por exemplo. Nestes casos, você não pode fazer:
elemento.onclick = funcao();
Pois ele tentará executar a chamada de funcao() nao hora.
Colocar entre aspas simplesmente não efetuará chamada alguma. O correto é:
elemento.onclick = funcao;
function funcao() {
...
};
Funciona perfeitamente, e atendeu às minhas necessidades. Contudo, desta forma não permite passar parâmetros.
A idéia então passa a ser criar uma nova função a ser executada nesta chamada que repasse os parâmetros. Como criar uma segunda função e utilizar conforme acima fica "feio", dá para criar diretamente uma função na variável do evento onclick.
Não testei a parte abaixo, mas a lógica acho que é adequada:
elemento.onclick = function() { funcao('param1'); }
function funcao(parametro) { ... }
:)

Nenhum comentário: