2016-04-19 3 views
0

Привет, ребята, могу ли я использовать значение как имя функции в JavaScript? У меня есть некоторые функции, с одноименными входными значениями, такие как:Как использовать имя переменной в имени функции в JavaScript

var ta = $('li.ramin.active').attr("id"); 
var act = $('input[name="'+ta+'_acceptdeny"]:checked').val(); 


act(Freq, meID); // my question is 

таким образом у меня есть ошибки «Uncaught TypeError: акт не является функция» да я знаю, акт не является функция, но я хочу использовать уаг акт значение как имя функции !! поэтому мне нужно знать, как я могу это сделать? благодаря всем

+0

что такое 'Freq' и' meID'? Непонятно, что именно вы спрашиваете. –

+0

http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string – izzy

+0

Вы * можете * сделать это, но вы ** вероятно не должны **. Я бы посоветовал вам объяснить, почему вы хотите это сделать, и, возможно, получить ответ на лучший дизайн. Кроме того, вы могли бы лучше изучить JavaScript более подробно, поскольку вам кажется, что вам не хватает базового понимания (по используемым вами терминам). – Amit

ответ

0

Вы можете использовать window[act](Freq, meId)

Justin Niessner Спасибо за указание на это будет работать только если act определяется в глобальном масштабе. Вы можете использовать eval, однако, как правило, это считается очень опасным.

+0

Это зависит от того, как определена функция. Это может работать или не работать. –

+0

Спасибо, что вы работали – CHARLI

+0

@CHARLI, если это сработало для вас, отметьте его как принятое – slessans

0

Нет ничего, что помешало бы вам повторить объявление как функцию, вы просто потеряете все ссылки на первоначально объявленный акт с точки дальше.

0

Вместо использования значения в качестве имени функции поместите функции в объект и используйте это значение как ключ к объекту.

var myFunctions = { 
    'func1': function() { .... }, 
    'func2': function() { .... }, 
    // and so on 
}; 

var ta = $('li.ramin.active').attr("id"); 
var act = $('input[name="'+ta+'_acceptdeny"]:checked').val(); 

myFunctions[act](Freq, meID); 

Это лучше, потому что вы не можете случайно вызвать функцию, которая не была предназначена для использования приложения, оно может вызывать только функции в myFunctions объекта.

Смежные вопросы