2014-11-06 228 views
-1

是否可以使用JavaScript將click事件設置爲變量函數名稱?javascript onclick設置爲變量函數名?

我想動態地將每個選定元素設置爲名稱在別處聲明的函數。這些功能是類方法。我不知道這是爲什麼它不起作用。

我知道這是很奇怪的猴子的東西,但它是更好的替代使用開關,與我必須解析的所有功能。

函數名稱得到

// get last part of the string 
var x = strName.split("_"); 
var y = x[x.length - 1]; 

這工作

holder[j].onclick = function(){ini['add']();}; 

這不,出於某種原因

holder[j].onclick = function(){ini[y]();}; // I checked: y == 'add' in the test 
+0

你在哪裏測試'y ==='add''?嘗試檢查'onclick'處理程序本身。 – 2014-11-06 04:23:14

+1

你確定你沒有關閉,這樣* y *(因此'ini [y]')在函數被調用時解析爲一個意外的值?哦,並定義「不起作用」。有錯誤嗎?什麼都沒發生?咖啡變冷了嗎? ...? – RobG 2014-11-06 04:26:36

+1

考慮讓y成爲一個全局變量。 – sideroxylon 2014-11-06 05:19:01

回答

0

我發現,這樣做工作。的onclick是集的功能我希望它是,剛剛聲明

ini[y](); 

爲Y不再是範圍設置完成後(即使是,也沒有說它會是正確的y,因爲它在每次迭代中都有不同的值),所以我不得不將它拉出來以使其確定函數。

使用此:

holder[j].onclick = function(){clickMaster(this);}; 

那麼這個:

function clickMaster(ele){ 
    // pull out strName based on ele 
    var x = strName.split("_"); 
    var y = x[x.length - 1]; 
    ini[y](); 
} 

而不是僅僅嘗試直接設置的onclick給類方法。