6

我需要加载函数以从 HTML 文件中包含的外部 JS 获取数据,我正在这样做:

<body onLoad="getTicket();">
......
</body>

或这个:

<html>
<body>
    <head>
    <script src="js/jquery.js" type="text/javascript"></script>
    <script src="js/functions.js" type="text/javascript"></script>
    <script>
        $(document).ready(function() {
            getTicket();
        });
    <script>
    </head>
<body>
</html>

或这个:

<html>
<body>
    <head>
    <script src="js/jquery.js" type="text/javascript"></script>
    <script src="js/functions.js" type="text/javascript"></script>
    <script>
        getTicket();
    <script>
    </head>
<body>
</html>

我在functions.JS中有这个:

functioOne() {

}

functionTwo() {

}

$(document).ready(function() {
    ...
    .....
    function getTicket() {
        //to do
    }
});

但不起作用并在控制台中显示:

Uncaught ReferenceError: getTicket is not defined 

问候。

4

5 回答 5

9

您的getTicket函数仅在 jQuery 闭包(匿名函数)的上下文(范围)中定义。而是在全局范围内定义它(在文件的其他地方而不是作为“函数参数”)。

如果您需要该范围内的变量,请将它们封装在命名空间(对象)中,或将其声明为window.getTicket = function() { /* ... */}.

于 2013-02-16T08:47:18.583 回答
5

尝试将function getTicket(){}外部或doc ready

functio One() {

}

function Two() {

}
function getTicket() {
    //to do
}

$(document).ready(function() {
...
.....
   getTicket();
});

您的包含顺序是完美的,没有问题。

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/functions.js" type="text/javascript"></script>

这很好。

于 2013-02-16T08:54:37.253 回答
4

你可以这样做:

$(document).ready(function() {
  ...
  .....
  window.getTicket = function() {
    //to do
  } 
});

文件准备好后,您就可以调用 getTicket

于 2013-02-16T08:47:59.877 回答
0

添加<script type="text/javascript src="external.js"></script>head.

然后您必须等待文档完全加载。

问题是您的代码以这种方式执行:

  • 执行 external.js
  • 您的函数未定义,因为文档尚未完成加载
  • 你调用未定义的函数
  • 文件准备好了

恕我直言,我认为在 $(document).ready 中定义函数不是一个好主意。通常定义该函数会更简单,然后在 $(document).ready 中调用它。

于 2013-02-16T08:47:13.823 回答
0

在调用函数之前,您必须包含 js 文件。如果你这样做:

<html>
<body>
    <head>
    <!-- include script files here.(jquery and custom script files) -->
    <script>
        $(document).ready(function() {
            getTicket();
        });
    </script>
    </head>
<body>
</html>

您必须在调用该函数之前包含您的脚本文件。

于 2013-02-16T08:48:45.433 回答