2009-11-04 4 views
1

Voici le problème - Je connais la fonction par son nom (et cette fonction a déjà été chargée depuis un script externe), mais je n'ai pas de fonction objet disponible pour moi d'appeler. Normalement j'appellerais eval (nom_fonction + "(arg1, arg2)"), mais dans mon cas je dois lui passer un objet, pas une chaîne. Exemple simple:Exécuter une fonction par son nom, en passant un objet en paramètre

var div = document.getElementById('myDiv') 
var func = "function_name" -- this function expects a DOM element passed, not id 

Comment puis-je exécuter cette fonction?

Merci! Andrey

+1

Voir http://stackoverflow.com/questions/359788/javascript-function-name-as-a-string et http://stackoverflow.com/questions/496961/how-do-i-call-a-javascript-function-name-using-a-string et http://stackoverflow.com/questions/912596/how-to-turn-a -string-dans-un-javascript-fonction-appel et la liste continue ... –

+0

Mon mauvais, je suppose que je n'ai pas cherché assez bon avant de demander – Andrey

Répondre

4

Vous devriez pouvoir obtenir l'objet de fonction à partir du niveau supérieur window. Par exemple.

var name = "function_name"; 
var func = window[name]; 
func(blah); 
5

Ne jamais utiliser eval, ESt mal (voir qu'une seule lettre de différence) Vous pouvez simplement faire:

var div = document.getElementById('myDiv'); 
var result = window[function_name](div); 

Ceci est possible parce que les fonctions sont des objets de première classe en javascript, afin que vous puissiez les accède comme vous pouvez avec n'importe quelle autre variable. Notez que cela fonctionne également pour les fonctions qui veulent des chaînes ou quoi que ce soit paramter:

var result = window[another_function_name]("string1", [1, "an array"]); 
Questions connexes