我有一个index.php文件
<!DOCTYPE HTML>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="test1.js"></script>
<script src="test2.js"></script>
</head>
<body>
</body>
</html>
TEST1。 js是
$(document).ready(function(){
alert('hello');
function check(){
alert('hello i should also appear'); }
});
而test2.js是
$(document).ready(function(){
check();
});
hello
正在提醒,但是hello i should also appear
没有提醒,有人可以告诉我这里我做错了什么。
谢谢你的优势
答案 0 :(得分:3)
您的函数是在匿名function(){}
内定义的,因此可以在其范围内调用它。
您应该修复它并在其外部定义函数:
// now it will be visible everywhere
var check;
$(document).ready(function(){
alert('hello');
check = function (param){
alert('hello i should also appear. Param passed is ' + param); }
});
});
答案 1 :(得分:1)
在test1.js下,请用document.ready写出你的功能。写在document.ready内的函数不能从外面访问。所以你必须从document.ready
移出它function check(){
alert('hello i should also appear');
}
答案 2 :(得分:0)
您已在传递给document.ready()的第一次调用的闭包中定义了“check”。传递给document.ready()的第二次调用的闭包无法访问第一个闭包的范围,在这种特殊情况下,只要在其中定义闭包,函数“check”只会保持不变。 / p>
您需要将检查功能移出闭包,并移动到更高的词法范围,两个闭包都可以访问它。
答案 3 :(得分:0)
你应该把功能写成全局的。如果您在document.ready()
中写入,则该功能范围受限,因此您无法从其他javascript文件访问它
答案 4 :(得分:0)
将 test1.js 更改为
$(document).ready(function() {
alert('hello');
});
function check() {
alert('hello i should also appear');
}
并确保在加载 test2.js 之前加载 test1.js 。