题
这里的问题 - 我知道名字的功能(这功能已经加载形式的外部脚本),但我没有,我打电话给一个实际的函数对象无济于事。通常我会打电话的eval(函数名+“(ARG1,ARG2)”),但对我来说,我需要传递一个对象给它,而不是一个字符串。 简单的例子:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
我如何执行此功能?
谢谢! 安德烈
解决方案
您应该能够从顶层window
得到函数对象。 E.g。
var name = "function_name";
var func = window[name];
func( blah );
其他提示
从不使用eval,it's恶(只能看到一个字母的差别) 你可以简单地做:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
,因为函数是在JavaScript第一类对象,以便你可以与任何其它变量可以存取权限他们这是可能的。请注意,这也将为那些希望字符串或任何作为放慢参数职能的工作:
var result = window[another_function_name]("string1", [1, "an array"]);
不隶属于 StackOverflow