33

我正在尝试调试使用jQuery.

在 $(document).ready.. 中的 firebug im 调用函数中

 function val() { console.log('validated outside doc.ready'); }
 $(document).ready(function()
 {

    console.log('document ready...');

    function validate() { console.log('validated!'); }
 }

在萤火虫控制台我输入validate(),它说它不是一个功能

如果我输入val()它工作正常。

我如何从控制台调用验证?

4

4 回答 4

73

你不是在调用这样的函数,你只是定义了函数。

正确的做法是在外面定义函数document.ready,在里面调用:

// We define the function
function validate(){
  console.log('validated!');
}

$(document).ready(function(){
  // we call the function
  validate();
});

另一种选择是像这样自行调用函数:

$(document).ready(function(){
   // we define and invoke a function
   (function(){
     console.log('validated!');
   })();
});
于 2013-07-10T09:36:31.313 回答
11

您的validate函数是您传递给 jQueryready处理程序的函数的本地函数。

如果你这样做:

window.validate = function(){ /*....*/ };

您将能够从控制台访问。但是除非只是为了调试,否则污染全局范围并不是一个好习惯。

于 2013-07-10T09:37:35.490 回答
1

好吧,你有什么理由需要在文档中准备好该功能吗?只有在那些括号(范围)内,该函数才会存在。只需将其移出,或仅将其全部移出 document.ready

于 2013-07-10T09:40:44.730 回答
0

您的代码中有 2 个错误。

  1. 格式为右括号
  2. 您没有调用该函数。需要调用该函数来打印它。
<script>
  function val() { console.log('validated outside doc.ready'); }
  $(document).ready(function() {
    console.log('document ready...');
    validate();
    function validate() { val();  console.log('validated!'); }
  });
</script>
于 2021-10-14T09:42:10.033 回答