我有大量的函数绑定到不同的元素。
因此,我决定在一个文件中定义我的所有功能。然后从其他文件中调用。
HTML
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/js/jquery.min.js"></script>
<script src="~/js/functions.js"></script>
<script src="~/js/site.js"></script>
</head>
<body>
<div>
Hello!! This is a sample page
</div>
</body>
</html>
functions.js
$(document).ready(function (e) {
//like this I have 50+ functions
function GetCustomers()
{
//ajax call.
}
});
site.js
$(document).ready(function (e) {
GetCustomers();
});
但这会引发以下错误。
未捕获的ReferenceError:未定义GetCustomers
答案 0 :(得分:4)
mylocalVar
在ready处理程序中定义函数,使其保持在该作用域的本地。将它移到外面(或者只是摆脱$(document).ready(function (e) {
//like this I have 50+ functions
function GetCustomers()
{
//ajax call.
}
});
),这样它就在全球范围内。请参阅函数范围文档。
如果您不想将所有这些函数添加到全局范围,可以创建一个全局对象,并将它们添加为方法:
$(document).ready()
答案 1 :(得分:2)
从functions.js
中删除包装$(document).ready()答案 2 :(得分:2)
请勿在文档内使用该功能。
GetCustomers
使用
$(document).ready(function (e) {
function GetCustomers()
{
//ajax call.
}
});
答案 3 :(得分:1)
无需将所有功能都包含在$(document).ready
中,这就是您的问题。两个问题:
.ready
不会消失,因此代码不会执行(并且
因此,您的功能未创建)答案 4 :(得分:1)
将你的功能写在document.ready()
之外 <script>
function GetCustomers()
{
//your code.
}
</script>
答案 5 :(得分:0)
将SELECT h.*
FROM (SELECT h.*,
SUM( (next_datetime < datetime + interval '1 minute')::int) OVER (ORDER BY datetime DESC) as grp
FROM (SELECT h.*,
LEAD(h.datetime) OVER (ORDER BY h.datetime)) as next_datetime
FROM history h
) h
WHERE next_datetime < datetime + interval '1 hour'
) h
WHERE grp IS NULL OR grp = 0;
拉出document.ready函数。
答案 6 :(得分:0)
如果要在单独的文件中定义,请不要在functions.js中直接定义函数的document.ready中使用GetCustomers。