很抱歉,但如何从 someFunction ()访问 myFunction()?
<script>
$(document).ready(function() {
// Get messages
var myFunction = function() {
// doSth.
}
// Make the initial call on page load.
myFunction();
);
function someFunction() {
// Call the function a second time
myFunction(); // Call fails!
}
</script>
答案 0 :(得分:4)
您正在使用传递给ready
方法的匿名函数。只需将定义移到该函数之外。
答案 1 :(得分:1)
它更像是一个范围问题。是的,您正在使用匿名函数,但即使您通过删除这样的var使其全局化:
$(document).ready(function() {
// gets defined AFTER THE DOM IS READY
myFunction = function() {
// doSth.
}
}
// is called BEFORE THE DOM IS READY
myFunction();
它仍然不起作用,因为在调用someFunction时尚未定义myFunction。 someFunction在文档准备好之前立即运行,这是在定义myFunction之前。
这两个函数都需要位于文档就绪块中,或者位于文档就绪块之外。如果你需要操作DOM元素,我建议在里面。
如果为处理程序调用{{1}},您可以从someFunction
中删除var
声明,它将按预期工作,因为这会将myFunction
放入全局范围。
答案 2 :(得分:1)
我认为这不会起作用,因为在dom准备好并且文档'ready'事件被触发之前,将不会创建'myFunction'函数。对'myFunction'的第二次调用发生在'myFunction'创建之前。即使您在全局命名空间中创建函数'myFunction',这种情况也会失败。
如果您未在'myFunction'中使用任何闭包值,则可以将此函数移动到全局命名空间。这将解决你的问题。 例如:
var myFunction = function(){
//Do somthing
}
$(document).ready(function(){
myFunction();
});
myFunction()
答案 3 :(得分:0)
我认为您无法使用当前代码调用myfunction()
。您必须从function() { var myfunction = ... };
中获取document.ready().
分离方法,然后您可以调用myFunction。