我的javascript函数找不到

时间:2012-04-24 12:50:48

标签: javascript jquery

我有以下内容:

$(function () {

    $.ajaxSetup({ cache: false });
    var dialogs = {};

    var formSubmitHandler = function (e) {
        ...
    }

}

然后在另一个脚本中我尝试调用

function dialogClick(link) {

    $.get(viewUrl + parameters)
            .success(function (content) {
                if (content.match(/^[eE]rror/)) {
                    mvcOnFailure(data)
                } else {
                    $.modal({
                        title: title,
                        closeButton: true,
                        content: content,
                        width: false,
                        resizeOnLoad: true
                    }).find('form').submit(formSubmitHandler).end();
                }
            })

请注意,我已经删除了部分脚本以便于阅读。没有脚本错误只显示以下错误:

在第二个脚本中,我在Internet Explorer中收到一条错误消息“SCRIPT5009:'formSubmitHandler'未定义'。

我是否错误地称呼它?我认为这个功能是全局的,当我检查时 它所在的脚本附在页面上。

4 个答案:

答案 0 :(得分:7)

不,这不是全球性的;您的“formSubmitHandler”函数在您发布的第一个示例代码块的“ready”回调中声明。因此,它对该功能是私密的。

如果你真的想要一个全局功能,你可以做的是:

window['formSubmitHandler'] = formSubmitHandler;

在第一个函数中。或者,您可以将其设为jQuery“全局”函数:

$['formSubmitHandler'] = formSubmitHandler;

在这种情况下,你可以$.formSubmitHandler开始。

答案 1 :(得分:0)

尝试将功能移出功能块,例如

$(function () {

    $.ajaxSetup({ cache: false });
    var dialogs = {};
}

var formSubmitHandler = function (e) {
    ...
}

答案 2 :(得分:0)

formSubmitHandler仅存在于您声明的函数范围内,因为您使用了var变量。

您需要:

  1. 在同一范围内声明dialogClick
  2. 使用formSubmitHandler或仅window.formSubmitHandler
  3. 在全局范围内声明function formSubmitHandler(){}

答案 3 :(得分:0)

formSubmitHandler是在dialogClick()函数

不可见的范围内声明的函数

所以

  • 您将formSubmitHandler声明为global
  • 或者在dialogClick函数中定义函数document.ready(并且formSubmitHandler是可到达的,因为在父作用域中)