2010-10-25 11 views
2

Je voudrais créer une fonction de celle-ci:Javascript: Fonction pour un événement

element.onclick = function(e){ 
    ... code ... 
} 

à quelque chose comme ceci:

element.onclick = doSomething(e); 
element2.onclick = doSomething(e); 

function doSomething(e){ 
    ... code ... 
} 

De cette façon, je pourrais appeler la fonction à plusieurs reprises, mais De cette façon, e n'est pas transmis en tant qu'événement, cela ne fonctionne donc pas.

Comment est-ce que je devrais faire ceci?

Sry Si je dis quelque chose de stupide, cette chose est un peu difficile de me

+0

Je suis un peu confus. Essayez-vous de faire de cette fonction onclick une variable et appelez-la plusieurs fois? Ou voulez-vous simplement exécuter ce qui est dans cette fonction n'importe où? – shoebox639

+0

Sry Je suis confus aussi, j'ai édité ma question: P – Adam

+0

Hey le problème était avec (e) dans 'element.onclick = faire quelque chose (e);' lol: D Cela fonctionne maintenant merci les gars! – Adam

Répondre

3

Je ne sais pas exactement ce que vous voulez dire, mais vous pouvez déclarer une fonction et l'utiliser comme gestionnaire pour plusieurs éléments. L'argument event sera toujours transmis.

element.onclick = someHandler; 
anotherElem.onclick = someHandler; 
yetAnotherElem.onclick = someHandler; 

function someHandler(e){ 
    e = e || event; 
    ... code ... 
} 

Chacun des 3 éléments appellera le même gestionnaire et aura l'objet événement comme argument.


EDIT: En ce qui concerne votre édition, vous étiez appelant la fonction et attribuer sa valeur de retour à onclick au lieu d'attribuer la fonction elle-même.

Semble de votre commentaire que vous avez compris cependant. : o)

0

Vous devez écrire sous la forme de:

function fnName(e){ 
    ... code ... 
} 

et vous pouvez appeler fnName et laissez-passer la variable dont vous avez besoin.

Si votre fonction n'a pas vraiment besoin de la 'e', ​​vous pouvez écrire

function fnName(){ 
    ...code... 
} 
+0

Vous pouvez alors dire 'element.onclick = fnName' et cela fonctionnera comme le premier exemple de code dans la question. – BudgieInWA

-1

vous pouvez faire ceci:

element.onclick = function (e) {

myfunc(); 

}

fonction monfunc()

{

... Code

}

1
function onClickHandler(e){ 
    //Do stuff... 
} 

element.onclick = onClickHandler; 
1

Je pense que vous demandez comment créer une fonction normale et l'utiliser de différentes manières?

function fnName(e) { 
    ... code ... 
} 

Peut être utilisé de différentes façons:

element.onclick = fnName; 

fnName(); 

//Call it however you like? 
1

Vous devez d'abord donner un nom à votre fonction.

function clickEvent(e) { 
    ... do stuff ... 
} 

Ensuite, fixez-le sur l'élément comme celui-ci:

element.onClick = clickEvent; 

Lorsque l'événement est déclenché, l'événement sera automatiquement transmise dans la fonction.

Questions connexes