文字列からのイベントを添付したい。私が抱えている問題は、関数名が文字列として渡されるのではなく、関数が呼び出されたときにコンパイルされるため、未定義の変数エラー(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が定義されていないというエラーが表示されます。