2010-11-12 7 views
3

J'essaie de faire quelque chose comme ça Javascript function as a parameter to another function?. Mais malheureusement je n'ai pas réussi. J'ai fait quelque chose de mal, mais je ne sais pas quoi. pls m'aide!fonctionne comme un paramètre à une autre fonction dans JS?

Il existe un élément div et une fonction. Qu'est-ce que la fonction est: prend une autre fonction en tant que paramètre et l'exécuter sur cliquez sur l'élément div:

UPDATE3: J'ai essayé d'obtenir le code pour travailler avec vos exemples ci-dessous, avec ma toile d'origine projet. Mais j'ai un problème avec certains paramètres. J'espère que vous pourrez répondre à cette question aussi vite que les autres.

MISE À JOUR4: Merci Andy E! et tous ceux qui m'ont aidé! J'apprécie beaucoup!!

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 


    </head> 
    <body> 
    <div id='divElement'>Hello World!</div> 
    <script type="text/javascript"> 

     function button(exefunction){ 
      //Some code that decide which date 
      var date = '20101010'; 
      document.getElementById('divElement').onclick = exefunction(date); 
     } 
     function testfunction(text){ 
      document.getElementById('divElement').innerHTML = text; 
     } 
     button(testfunction); 
    </script> 
    </body> 
</html> 
+0

votre DOCTYPE envisager d'actualiser. –

+0

Que dois-je utiliser à la place? Mon IDE ne fonctionne pas avec HTML-5 doctype – einstein

Répondre

5

changement testfunction à function et vous aurez une fonction anonyme qui est passé comme argument. Vous devez également supprimer les parens de exefunction (avec eux la fonction est appelée au lieu de assigné):

function button(exefunction){ 
     document.getElementById('divElement').onclick = exefunction; 
    } 
    button(function(){ 
     document.getElementById('divElement').innerHTML = 'Changed'; 
    }); 

Here is a working example to play around with.


Retirez vos parens! Les parenthèses exécutent la fonction au lieu de la transmettre en tant qu'argument. Lorsque vous exécutez une fonction, sa valeur de retour est passée à la place.

Second working demo.


Pour votre dernière modification, vous devez créer une autre fonction anonyme pour le code de travail:

 document.getElementById('divElement').onclick = function() { 
      exefunction(date); 
     } 

Third (final?) working demo.

+1

+1 - Trop vite! – ChaosPandion

+0

J'ai déjà testé pour exclure la paranthésis et cela ne fonctionne pas. – einstein

+0

attendre mal de mon côté! Je vais mettre à jour la question. – einstein

2

Je remplacerais la ligne

button(testfunction()); 

par

button(testfunction); 

MISE À JOUR Le point est que vous attendez onclick une fonction d'argument none yous devrait essayer quelque chose le long des lignes

function button(exefunction){ 
     //Some code that decide which date 
     var date = '20101010'; 
     document.getElementById('divElement').onclick = function() {exefunction(date);} 
    } 
+0

Merci! c'était peut-être une question facile pour vous les gars. Mais merci quand même. – einstein

+0

J'ai essayé de faire fonctionner le code avec vos exemples, avec mon projet web original. Mais j'ai un problème avec certains paramètres. SVP jeter un oeil à la question mise à jour – einstein

+0

J'ai mis à jour ma réponse en fixant les points que vous écrivez. –

Questions connexes