准备好jQuery文档中的调用函数
Posted
技术标签:
【中文标题】准备好jQuery文档中的调用函数【英文标题】:Calling function inside jQuery document ready 【发布时间】:2011-12-29 20:10:19 【问题描述】:在调试时,我总是使用 Firebug 并尝试调用函数并显示变量。但是,当函数或变量在 $(document).ready
中定义时,我不能。
如何访问这些变量?我可以输入命名空间之类的内容,例如document.ready.variableName
,或者我怎么能看到这个?
提前谢谢你。
【问题讨论】:
【参考方案1】:全局变量和函数可以通过将它们分配为window
的属性来创建:
$(function()
window.foo = function foo()
// …
);
foo()
应该在该处理程序执行后的任何地方都可以访问。
【讨论】:
【参考方案2】:如何访问这些变量?
嗯,你不能。您在匿名函数中定义的所有内容(例如您在 $(document).ready
中使用的内容)都将作用于该匿名函数。它是私有的,外部无法访问。
因此,如果您需要检查在其范围内定义的某些私有变量,您可以将您的 console.log
放在 $(document).ready
中。
【讨论】:
我可以像使用变量一样定义窗口函数,如“window.variableName = string”吗? @KennethB,当然,由您决定变量的范围。你总是可以写window.foo = ...
然后检查 window.foo
因为 window
对象是公共的并且代表全局范围。
是的,我知道。但是我可以用函数做同样的事情吗?
@KennethB,当然,window.foo = function() alert('bar'); ;
。然后window.foo();
.【参考方案3】:
这就是调试的目的。在所有主流浏览器(包括 IE)中,您都可以在 javascript 代码中设置断点。完成后,脚本会停止,您可以检查变量。
这里有一些链接:
http://getfirebug.com/javascript http://www.jonathanboutelle.com/how-to-debug-javascript-in-internet-explorer How do you launch the JavaScript debugger in Google Chrome?【讨论】:
致对我投反对票的那个人。请留下评论并说明原因。 这至少没有直接回答问题。他想知道 1 - 如何访问在 .ready() 函数中声明的变量和 2 - 如果没有,他如何编写他的 JavaScript 以便他可以。这些是谈论调试的链接。根据他的问题,他很清楚 JavaScript 调试的基础知识。 更正我,但我的印象是@Kenneth B 不知道如何使用断点进行调试。有时最好提供作者所要求的替代方案。对于我的情况,我很少设置全局变量来调试我的 javascript,但广泛使用调试器。在我看来,这是一种优越得多的方法,因为您可以在调用堆栈中跳转,看看每个堆栈中的状态是什么。 @Zero21xxx:“知道如何使用 Firebug 作为 DOM 检查器/REPL”并不意味着“知道 JS 断点”。如果实际上 OP 确实想知道如何在他准备好的处理程序中检查随机局部变量(我认为这不是解释问题的错误方式),那么这个答案表明了一种完全有效且有用的方法。【参考方案4】:这取决于您如何在.ready()
函数中声明变量。如果你做var x = "test"
,那么不行,它们只能在 ready 函数的范围内访问。如果您执行x="test"
之类的操作,那么它在全局范围内可用,您可以像alert(x);
或alert(window.x);
一样访问它
您可能不想在 ready 函数内定义变量,但如果您尝试在 ready 函数之外使用它们。
【讨论】:
【参考方案5】:在全局范围内声明变量:
例如
<script type="text/javascript">
var globalVar = null;
$(document).ready(
function()
globalVar = "This is the value";
);
function TestFunc()
alert(globalVar);
</script>
在这里,如果您在页面加载后的任何时间调用TestFunc()
,您将看到在 ready() 函数中分配的值。
【讨论】:
【参考方案6】:不确定我是否完全理解了这个问题,但你不能在文档之外声明变量准备好了吗?
var a = "bar";
$(document).ready(function()
a = "foo";
);
如果您使用的是 firebug,您应该可以在文档就绪内调用 console.log
,这可能会为您提供所需的内容。
【讨论】:
【参考方案7】:如果你有
var x = "foo"
$(document).ready(function()
alert(x); // foo
);
您可以在任何地方看到x
变量,但如果您将变量y
声明到文档就绪,它将只能在文档就绪内访问:
var x = "foo"
$(document).ready(function()
alert(x); // foo
var y = "bar"
alert(y); // bar
);
alert(y); // undefined
【讨论】:
以上是关于准备好jQuery文档中的调用函数的主要内容,如果未能解决你的问题,请参考以下文章