Я уверен, что задал этот вопрос неправильно. Я пытаюсь передать строку, например onClick="someFunc(arg1,arg2...)"
, парсеру javascript.
Парсер должен создать событие onClick для someFunc с аргументами (arg1, arg2 и т. д.).
Моя проблема заключается в том, что по мере того, как текст проходит через синтаксический анализатор, область действия переменной, содержащей строковое имя someFunc, передается вниз, так что все прикрепленные события регистрируются как последняя объявленная строка.
В приведенном ниже коде attribute._onClick может быть строкой 'onClick="someFunc(arg1,arg2);" для одного элемента, за которым следует 'onClick="otherFunc(argA,argB);" для другого элемента, когда анализатор перемещается по строке.
Вывод в браузере (Firefox V14.01) имеет функцию события, всегда регистрируемую как otherFunc. Таким образом, f_name в замыкании не оценивается как переменная, а просто регистрируется как последнее значение f_name, объявленное при разборе всего блока.
Я не знаком с масштабом в той степени, в которой мне нужно быть, чтобы понять это. Кто-нибудь знает, как я могу прикрепить события таким образом (я пытаюсь не выходить за пределы синтаксического анализатора, чтобы добавить события)?
temp = attributes._onClick ;
var x = 0 ;
var f_name,f_args ;
while(temp[x] != '') {
temp[x] = temp[x].replace(')','').split('(') ;//remove paranthesis and separate func name from args
f_name = temp[x][0] ;
f_args = temp[x][1].split(',') ;//turn string of args into array
el.onclick = function() { window[f_name].apply(el,f_args) ; }
x++ ;
}