我的项目中有一个弹出系统。使用名称,例如'addnews',它知道要添加哪个弹出内容以及处理表单所需的脚本。到目前为止,我总是做同样的事情。现在,在某些情况下,我想做一些不同的事情。
现在我想添加一个具有相同名称的JavaScript函数,如前面的例子'addnews()',并检查该函数是否存在。如果它确实运行它,否则做标准的事情。 (1)
同时执行具有该名称作为变量的函数似乎不起作用。 (2)
var functionName = 'addnews';
if (typeof functionName == 'function') { // (1) typeof functionName = string
window[functionName](); // (2) this doesn't work for me
} else {
// Do something standard
}
function addnews() {
// Do something special
}
答案 0 :(得分:3)
如果您在文档中使用此代码并且未加载complitelly,则您的代码将找不到函数addnews(),因为它在此代码之前未声明。
与评论中一样:您需要使用
if (typeof window[functionName] == 'function')
答案 1 :(得分:0)
这样做:
if (typeof eval(functionName) == 'function') {
eval(functionName+'()');
} else {
// Do something standard
}
更新:如果Mic的答案不起作用(无论如何),请仅使用此项。就像他说eval非常危险。