2016-10-13 1 views
0

У меня есть следующие функции, которые должны создать функцию из строки с событием -Создание функций из строк с событиями

function getFuncDefEvent(jsFunctionString){ 
    if(jsFunctionString!= undefined) { 
     return function(event){jsFunctionString}; 
    } 
} 

это будет примером функции строки:

jsFunctionString = "doSomething(event); doSomethingElse(); 

I Он привязал его к событию onclick, однако он не срабатывает ни в одном из событий. Я что-то упускаю ?

+0

Что вы ожидаете от String? Я подозреваю, что вам нужно будет использовать ['eval()'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/eval), но у него есть проблемы с безопасностью с ненадежным кодом (и любой доступный пользователю, редактируемый пользователем код является или должен быть ненадежным). Возможный дубликат: http://stackoverflow.com/questions/7650071/is-there-a-way-to-create-a-function-from-a-string-with-javascript –

ответ

3

Это не то, как вы создаете функцию из строки. Вы должны использовать Function constructor:

return new Function(['event'], jsFunctionString); 
0

редактировать: На обзоре, я думаю, что ответ Barmar является, вероятно, более правильным, чем мой ответ ниже. Я оставлю его для потомков, но его, вероятно, тот, который следует выбрать как правильный.




Это не то, как работает Javascript. Если вы хотите оценить произвольные строки как код Javascript, вам нужно будет использовать eval. Обратите внимание, однако, что большая часть преобладающей мудрости такова, что eval is evil.