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>

这有可能吗?

4

5 回答 5

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>

这就是你所需要的

于 2013-10-12T15:34:42.433 回答
3

你可以这样做:

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

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

two('one');

有关更完整的答案,请参见此处:当我将其名称作为字符串时如何执行 JavaScript 函数

于 2013-10-12T15:39:16.680 回答
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>
于 2013-10-12T15:35:31.867 回答
1

最好的方法是传递对函数 ( fOne) 的引用而不是字符串(其他答案已经涵盖了这一点)。但是,如果你真的window想通过它的名字来调用你的函数,你可以在对象中查找它:

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

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

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

于 2013-10-12T15:38:26.943 回答
-1
function fTwo(f_name)
{
    eval(f_name+"()");
}

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

于 2013-10-12T15:33:56.473 回答