我想附加來自字符串的事件。我遇到的問題是函數名不是作爲字符串傳入的,而是在函數被調用時編譯,導致未定義的變量錯誤(temp)。在函數聲明而不是運行時分析所有變量
function someFun(arg) {
alert(arg) ;
}
temp[0] = "someFunc(test)" ;//this would be a sample of the incoming HTML
var x = 0 ;
while(temp[x] != '') {
temp[x] = temp[x].replace(')','').split('(') ;//remove paranthesis and separate func name from args
temp[x][1] = temp[x][1].split(',') ;//turn string of args into array
func = function() { window[temp[x][0]].apply(el,[]) ; }
el.addEventListener('click',func,false) ;
x++ ;
}
如果我不使用溫度[X] [0](這將是「someFunc」),但在用於方法。適用一個字符串,而傳遞(在這種情況下。適用(「someFunc」 ... ))直接我沒有問題,該函數將按預期與onClick調用。否則,當我點擊元素埃爾我得到一個錯誤,溫度沒有定義。
我想我們需要更多的信息來說明你正在做什麼,如果我們知道更多的話,實現你的目標可能會有一點點不同。 – ctcherry 2012-07-31 05:50:43
我試圖發送一個像HTML一樣寫的字符串,並且讓我的JavaScript解析器創建所有元素並添加像.innerHTML那樣的屬性+事件。在這種情況下,我試圖將onClick事件附加到元素el。 – 2012-07-31 05:56:33
請使用相關的代碼和輸入/輸出示例更新您的問題,並解釋爲什麼你在做什麼你在做什麼 – mplungjan 2012-07-31 05:57:04