我有两个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 :(得分: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+"()");
}
我会让某人比我解释安全隐患更聪明。