我想附加一个来自字符串的事件。我遇到的问题是函数名称不是作为字符串传入,而是在调用函数时编译,这会导致未定义的变量错误(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++ ;
}
如果我不使用 temp[x][0] (这将是 'someFunc'),而是直接为 .apply 方法(在本例中为 .apply('someFunc'...) )传入一个字符串,我没有问题并且该函数将按预期使用 onClick 调用。否则,当我单击元素 el 时,我会收到一个错误,即 temp 未定义。