2011-05-05 52 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]()