有没有办法通过另一个函数参数调用函数?

时间:2013-10-12 15:32:22

标签: javascript function

我有两个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>

这有可能吗?

5 个答案:

答案 0 :(得分: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 :(得分:3)

你可以这样做:

function one() {
    alert('one');
}

function two(fname) {
    window[fname]();
}

two('one');

如需更完整的答案,请参阅此处:How to execute a JavaScript function when I have its name as a string

答案 2 :(得分: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>

答案 3 :(得分:1)

执行此操作的最佳方法是传递对函数(fOne)的引用而不是字符串(其他答案已涵盖此内容)。但是,如果确实希望按名称调用您的函数,则可以在window对象中查找:

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

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

但是,字符串代码往往更容易出错,因此请使用Akshay或Rahul提供的方法。

答案 4 :(得分:-1)

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

我会让某人比我解释安全隐患更聪明。