2016-01-26 7 views
-1

Это моя функция javascript. Проблема в том, что я вызываю функцию внутри события click, отображая эту ошибку в Firefox, но не в Chrome.вызов функции jquery внутри события click click

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 
    } 
}); 
+4

функция следует перемещать за пределы обработчика 'click'. – Tushar

+0

см., Но в этом случае необходимо передать так много переменных, потому что его функция зависит от некоторых переменных – amtest

+0

, если функция определена так, код будет считаться интерпретатором сверху вниз. Объявление подвижной функции на вторую строку должно работать. –

ответ

0

Решение является просто переместить Todo декларацию перед первым, если заявление. Он по-прежнему будет иметь точно такой же объем, но функция будет доступна.

Edit просто чтобы понять

$(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 
     } 
    } 

}); 
+1

Зависит от того, чего он хочет достичь. Если функция действительно должна быть охвачена, это полностью хорошее решение. –

0

Вы можете попробовать это

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(); 
    } 
}); 

Но вы не должны делать это

Смежные вопросы