2013-10-12 3 views
2

У меня есть функция JavaScript. Я хочу вызвать функцию другим аргументом функции. Как этот код:Есть ли способ вызвать функцию с помощью другого аргумента функции?

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv='Content-type' content='text/html; charset=utf-8'> 
    <title>Javascript Function</title> 
    <script language="javascript" type="text/javascript"> 
     function fOne() 
     { 
      alert("Function One"); 
     } 
     function fTwo(f_name) 
     { 
      f_name; // I want to Call fOne() here 
     } 
    </script> 
</head> 
<body> 
    <a href="#" onclick="fTwo('fOne')">Call Function</a> 
</body> 
</html> 

Является ли это в любом Возможное образом?

+0

просто заменить f_name; с fOne(); – Gar

ответ

-1
function fTwo(f_name) 
{ 
    eval(f_name+"()"); 
} 

Я позволю кому-то умнее, чем объяснять последствия для безопасности.

+0

Зло !! Eaval - это зло! –

+1

кому-то нравится @AkshayKhandelwal –

4
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv='Content-type' content='text/html; charset=utf-8'> 
    <title>Javascript Function</title> 
    <script language="javascript" type="text/javascript"> 
     function fOne() 
     { 
      alert("Function One"); 
     } 
     function fTwo(f_name) 
     { 
      f_name(); // I want to Call fOne() here 
     } 
    </script> 
</head> 
<body> 
    <a href="#" onclick="fTwo(fOne)">Call Function</a> 
</body> 
</html> 

Это все, что вам нужно

+1

Кроме того, ознакомьтесь с методами «вызов» и «применить» - они позволяют вам установить «этот» объект, а «применить» позволяет передать массив для представления всех аргументов (если вы Не знаю во время кода, сколько аргументов будет). – Max

1

Попробуйте так: -

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv='Content-type' content='text/html; charset=utf-8'> 
    <title>Javascript Function</title> 
    <script language="javascript" type="text/javascript"> 
     function fOne() 
     { 
      alert("Function One"); 
     } 
     function fTwo(f_name) 
     { 
      f_name(); // I want to Call fOne() here 
     } 
    </script> 
</head> 
<body> 
    <a href="#" onclick="fTwo(fOne)">Call Function</a> 
</body> 
</html> 
1

Лучший способ сделать это, чтобы передать ссылку на вашу функцию (fOne), а не строка (другие ответы уже охватывают это). Тем не менее, если вы действительно хотите назвать вашу функцию по имени, вы можете посмотреть его в window объекта:

function fOne(){ console.log("fOne"); } 
function fCall (f_name) { 
    window[f_name](); 
} 

fCall("fOne"); // results in console.log. 

Однако stringly код, как правило, более подвержены ошибкам, поэтому используйте метод, предоставленный Акшай или Рахул.

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