2014-08-07 3 views
0

В форме у меня есть скрытое поле:Как вызвать функцию JavaScript из строкового значения?

<input type="hidden" id="callback_function" value="myFunction" /> 

Теперь некоторые JavaScript:

<script> 
    $('.dataRow').click(function(){ 
     if($('#callback_function').val()){ 
      //same as executing myFunction(); 
      eval($('#callback_function').val()+'();'); 
     } 
    }); 
</script> 

Это работает, но кажется очень безвкусными. Есть ли способ сделать это, не используя eval?

+1

Почему вы не можете просто положить 'myFunction' в коде, вместо использования скрытого ввода? – Bergi

+0

, потому что функция (в данном случае «myFunction») является переменной и не является частью фрагмента документа, который загружается Ajax. функция уже существует сценарий, который я показал –

+0

@Colin - да, это сообщение, на которое вы ссылаетесь, обложки это очень хорошо, спасибо. –

ответ

3

кажется, что функция является глобальной (свойство window), поэтому мы не должны eval это вообще:

<script> 
$('.dataRow').click(function(){ 
    var fnName = $('#callback_function').val(); 
    if(fnName && window[fnName]) { 
     window[fnName](); 
    } 
}); 
</script> 
Смежные вопросы