2011-05-05 4 views
1

J'ai une variable qui est le nom des fonctions. Je veux pouvoir appeler cette fonction à partir de la variable.Javascript ~ Appeler une fonction dans une variable

var CircuitBox= document.getElementById("QLCS") 
var CircuitNumber = CircuitBox.selectedIndex; 
var circuit = CircuitBox.options[CircuitNumber].value; 

// This Variable takes on the functions name that id like to call  
circuit; 

Cheers!

+0

Je pense que vous voulez dire JavaScript. Java et JavaScript ne sont pas identiques ou même liés. – gilly3

+1

S'il s'agit d'une fonction globale, alors: 'window [circuit]()'. –

Répondre

1

Dans les propriétés des objets JavaScript sont accessibles via y nom comme une chaîne en utilisant la notation de support, par exemple:

var propertyVal = myObj["propertyName"]; 

Et puisque les membres globalement SCOPED sont en fait des propriétés de l'objet global, vous pouvez obtenir les propriétés de l'objet window (qui est une référence à l'objet Global). Donc, si votre liste déroulante contient des valeurs qui correspondent noms de fonctions dans le contexte global, vous pouvez appeler cette fonction comme ceci:

window[circuit](); 
+0

Workd parfaitement TY très bien! – Sam

0

je peux penser à deux manières.

Vous pouvez essayer window[circuit]() s'il s'agit d'une fonction globale. L'autre option consiste à utiliser eval, mais eval est mauvaise. Donc, pour éviter les méchancetés de eval, une meilleure façon peut-être de maintenir une carte de gestionnaires:

var handlers = { 
    someValue: function() { 
     ... 
    }, 
    otherValue: function() { 
     ... 
    } 
}; 

Sur cette carte, vous êtes associer someValue et otherValue avec des fonctions anonymes. Donc, en supposant que votre boîte de sélection contient les options someValue et otherValue, la fonction appropriée sera appelée en fonction de ce qu'ils sélectionnent.

Ensuite, tout ce que vous avez à faire est handlers[circuit]().

Questions connexes