如何在javascript中修复此错误

时间:2016-12-22 13:10:03

标签: javascript jquery

我有大量的函数绑定到不同的元素。

因此,我决定在一个文件中定义我的所有功能。然后从其他文件中调用。

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();
});

但这会引发以下错误。

Error

  

未捕获的ReferenceError:未定义GetCustomers

7 个答案:

答案 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中,这就是您的问题。两个问题:

  1. .ready不会消失,因此代码不会执行(并且 因此,您的功能未创建)
  2. 因为你在.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。