2011-05-05 86 views
1

我有一个变量是函数名称。我希望能够从变量调用该函数。JavaScript〜调用变量中的函数

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; 

干杯!

+0

我认为您的意思是JavaScript。 Java和JavaScript是不一样的,甚至是相关的。 – gilly3 2011-05-05 16:38:19

+1

如果它是一个全局函数,那么:'window [circuit]()'。 – 2011-05-05 16:39:57

回答

1

在JavaScript对象的属性可以通过有名称用括号标记,例如访问作为一个字符串:

var propertyVal = myObj["propertyName"]; 

而且,由于全球范围的成员其实是全局对象的属性,你可以从属性窗口对象(它是对全局对象的引用)。所以,如果您的下拉列表中包含了映射在全球范围内发挥作用的名称值,你可以这样调用该函数:

window[circuit](); 
+0

非常适合TY! – Sam 2011-05-05 16:53:39

0

我能想到的两种方法。

如果是全局函数,则可以尝试window[circuit]()。另一种选择是使用eval,但eval是邪恶的。因此,为了避免eval的邪恶,更好的方法可能是保持地图的处理程序:

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

在这张地图上,你使用匿名函数关联someValueotherValue。因此,假设您的选择框包含选项someValueotherValue,将根据他们选择的内容调用相应的函数。

那么你所要做的就是handlers[circuit]()