我在两个文件js,file1和file2中定义了一些函数。在每个文件中,所有函数都在$(document).ready(function(){});
内。我小心地将file1放在file2上面的php文件中,并从file2中的file1调用一个函数,但是console返回undefined函数。这有什么不对?
答案 0 :(得分:1)
如果函数是在文档就绪处理程序中定义的,那么它们只存在于该范围内,并且在其他任何地方都无法访问。
最简单的解决方案是在文档就绪处理程序之外定义你的函数,并在就绪处理程序内或彼此内部使用:
文件1:
function myFunc() {
myOtherOtherFunc();
}
$(document).ready(function () {
myOtherFunc();
});
文件2:
function myOtherFunc() {
}
function myOtherOtherfunc() {
}
$(document).ready(function () {
myFunc();
});
应该注意的是,这会将函数放在全局范围内,这应该保持在最低限度,因此如果您发现需要在文件之间共享很多,那么您应该考虑使用命名空间甚至是某些东西比模块加载器更复杂(例如require.js)。
答案 1 :(得分:0)
因为您在另一个函数中定义了函数,所以它们不是全局变量。这是好的事情。
有几种方法可以解决这个问题:
将它们设为全局(blech)或
使用像RequireJS或
使用一个引用了所有功能的全局
最后看起来像这样:
var MyApp = MyApp || {};
$(document).ready(function() {
MyApp.myFunction = function() {
// ...
};
});
然后,您可以通过MyApp.myFunction()
从任何地方拨打电话。
答案 2 :(得分:-1)
$(document).ready应该在html页面上调用。我建议你将各个js文件中的函数分开,并从document.ready页面调用这些函数。我认为这应该可以解决问题。