2013-10-12 151 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

此外,請查看「調用」和「應用」方法 - 他們讓你設置「this」對象,「apply」讓你傳遞一個數組來表示所有的參數(當你不喜歡在代碼時不知道會有多少個參數)。 – 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代碼往往更容易出錯,所以使用所提供的方法改爲Akshay或Rahul。

相關問題