0

我的项目中有一个弹出系统。通过名称,例如“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
}
4

2 回答 2

3

如果您在文档中使用此代码并且它没有完全加载,您的代码将找不到函数 addnews() 因为它没有在此代码之前声明。

就像在评论中一样:你需要使用

if (typeof window[functionName] == 'function') 
于 2013-02-10T00:18:06.507 回答
0

这将做到:

if (typeof eval(functionName) == 'function') { 
    eval(functionName+'()');
} else {
    // Do something standard
}

更新:仅当 Mic 的答案不起作用(无论如何)时才使用此功能。就像他说的 eval 非常危险。

于 2013-02-10T00:17:38.127 回答