我正在尝试调试使用
jQuery.
的网络应用程序
在 firebug 中,我调用 $(document).ready.. 内的函数
function val() { console.log('validated outside doc.ready'); }
$(document).ready(function()
{
console.log('document ready...');
function validate() { console.log('validated!'); }
}
在 firebug 控制台中,我输入
validate()
,它说它不是一个函数
如果我输入
val()
,它就可以正常工作。
如何从控制台调用验证?
您不是在调用这样的函数,您只是定义该函数。
正确的做法是在
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!');
})();
});
您的
validate
函数是您传递给 jQuery ready
处理程序的函数的本地函数。
如果你这样做:
window.validate = function(){ /*....*/ };
您将能够从控制台访问。但污染全局作用域并不是一个好的做法,除非只是为了调试。
那么,您有什么理由需要在文档中准备好该功能吗? 只有在这些括号(范围)内该函数才会存在。只需将其移出,或者仅将其全部移入 document.ready
您的代码中有 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>
解决方案是:
var validate;
$(文档).ready(函数() {
console.log('document ready...');
validate = function() { console.log('validated!'); }
validate();
}