我的代码如下所示。从中删除了不需要的代码,只需编写所需内容。当我从body中的内联脚本调用我的toggleFunc时,它在控制台中显示未定义此函数。有谁能告诉我这有什么不对吗?
<head>
<script src="~/Client/js/lib/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var pageInitialize = function () {
..doing something here
function toggleFunc() {
..doing something more here
};
};
pageInitialize();
});
</script>
</head>
<body>
<script>toggleFunc()</script>
</body>
答案 0 :(得分:4)
在DOMReady被触发之前,您的两个函数都不会被定义,这将在toggleFunc
中body
的调用运行后发生。此外,toggleFunc
位于pageInitialize
函数内,因此无法在pageInitialize
之外访问。
试试这个:
<script type="text/javascript">
var pageInitialize = function () {
//..doing something here
};
pageInitialize();
function toggleFunc() {
//..doing something more here
};
</script>
答案 1 :(得分:1)
两个问题:
toggleFunc
不是全局函数。它位于pageInitialize
的本地。如果您希望它是全局的,请将其分配给window
。
您正在$(document).ready
回调中定义函数,该回调将在将来的某个时刻执行。您立即调用该函数,外部 $(document).ready
回调。它还没有被定义。
答案 2 :(得分:0)
toggleFunc()
无法从全局范围调用Closure。
在您使用$(document).ready