Javascript将函数传递给参数?

时间:2010-01-27 02:04:07

标签: javascript jquery function

我使用JQuery对话框,从PHP我可以为按钮构建一些加载项。为了能够从服务器端添加代码,我通过参数传递方法。问题是FireBug告诉我该方法没有定义:

alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png

okHandler是此方法调用的参数,用于引发对话框,它包含一个简单的警报消息,稍后会进行一些Ajax调用。知道为什么它不起作用吗?

alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png

3 个答案:

答案 0 :(得分:4)

看起来okHandler是一个包含函数声明的字符串,而不是实际的函数?

okHandler = "function anonymous(){alert('This is a test');}";

而不是

okHandler = function(){alert('This is a test');};

答案 1 :(得分:0)

As John Kugelman notesokHandler似乎是一个字符串。如果它是一个函数它会更好...但是,如果它必须是一个字符串,那么你需要通过eval()来实际执行它:

eval( "(" + okHandler + ")()" )

答案 2 :(得分:0)

当你收到错误时,是否加载了okHandler()函数(作为有效的JS对象 - 而不是String)?

我认为如果foo尚未在某处被声明为变量,那么调用类似“if(foo!= null)”的东西是不行的。 FireBug会抱怨:“okHandler没有定义。”

尝试这样的事情......

var myHandlers = {};
// Load okHandler as a member of myHandlers when applicable here...
$('#dialog'+idbox)...
    "Oky": function() {
        myHandlers.okHandler && myHandlers.okHandler();
        ...
    }
}