开发者问题收集

点击事件中的 jQuery 函数调用

2016-01-26
536

这是我的 javascript 函数。问题是当我在点击事件中调用该函数时,它在 Firefox 中显示此错误,但在 Chrome 中没有。

ReferenceError: toDo is not defined

$(document.body).on("click", ".btnCheck", function(){
    if () {
        //do something
    } else {
        if (pcheck == "online") {
            // Doing some operations and function calling
            toDo();
        } else {
            toDo();  // function calling, HERE SHOWING ERROR IN FIREFOX 
            // ReferenceError: toDo is not defined
        }
    }
    function toDo () {
       //Do something
    }
});
2个回答

解决方案是将 toDo 声明移到第一个 if 语句之前。它仍将具有完全相同的范围,但功能将可用。

编辑只是为了清楚起见

$(document.body).on("click", ".btnCheck", function(){
    function toDo () {
       //Do something
    }
    if () {
        //do something
    } else {
        if (pcheck == "online") {
            // Doing some operations and function calling
            toDo();
        } else {
            toDo();  // function calling, HERE SHOWING ERROR IN FIREFOX 
            // ReferenceError: toDo is not defined
        }
    }

});
Maciej Paprocki
2016-01-26

你可以尝试这个

var theFunction = function toDo () {
};
// then to execute it
theFunction();

就你的情况而言

$(document).ready(function(){     
    var theFunction = function toDo () {
        alert();
    };

        var pcheck = "test"
    if (pcheck == "online") {
        theFunction();
    }else{
        theFunction();
    }   
});

但你不应该这么做

HoangND
2016-01-26