我有一个变量,即函数名称。我希望能够从变量中调用该函数。
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 :(得分:1)
在JavaScript中,可以使用括号表示法通过名称作为字符串访问对象属性,例如:
var propertyVal = myObj["propertyName"];
由于全局作用域成员实际上是Global对象的属性,因此可以从window对象(它是对Global对象的引用)获取属性。因此,如果您的下拉列表包含映射到全局范围中的函数名称的值,则可以像这样调用该函数:
window[circuit]();
答案 1 :(得分:0)
我可以想到两种方式。
如果它是全局函数,您可以尝试window[circuit]()
。另一种选择是使用eval
,但eval
是邪恶的。因此,为了避免eval
的邪恶,更好的方法是维护处理程序的地图:
var handlers = {
someValue: function() {
...
},
otherValue: function() {
...
}
};
在此地图中,您将someValue
和otherValue
与匿名函数相关联。因此,假设您的选择框包含选项someValue
和otherValue
,将根据所选内容调用相应的函数。
然后你所要做的就是handlers[circuit]()
。