Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从html调用jquery代码内部的外部函数?_Javascript_Jquery_Html_Function - Fatal编程技术网

Javascript 如何从html调用jquery代码内部的外部函数?

Javascript 如何从html调用jquery代码内部的外部函数?,javascript,jquery,html,function,Javascript,Jquery,Html,Function,我需要加载函数从HTML文件中包含的外部JS获取数据,我正在这样做: <body onLoad="getTicket();"> ...... </body> 但不起作用,在控制台中显示: Uncaught ReferenceError: getTicket is not defined 注意。添加您的getTicket函数仅在jQuery闭包(匿名函数)的上下文(范围)中定义。而是在全局范围中定义它(在文件的其他地方,而不是作为“函数参数”) 如果需要来自该范围的变

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

<body onLoad="getTicket();">
......
</body>
但不起作用,在控制台中显示:

Uncaught ReferenceError: getTicket is not defined 

注意。

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

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

,您可以执行以下操作:

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

文档准备好后,您将能够调用getTicket

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

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

$(文档).ready(函数(){
getTicket();
});

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

尝试将
函数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>


这很好。

您如何将外部js文件包含到HTTML文件中?您使用的浏览器是什么?它是否会在控制台中产生错误?如果functions.js文件中存在解析错误,浏览器可能会“跳过”该文件的其余部分,导致您的getTicket()函数“未”定义头标记必须放在体标记之前-尤其是当您想要
时,您的意思是,我将该代码放在外部js或html文件中?谢谢,你的例子有助于理解这个想法。显然,我有它,这是你应该做的第一件事。问题是getTicket()包含jQuery代码,因此我无法输出。我认为不会有任何问题,但您可以尝试此操作。@SoldierCorp ready部分的文档只是确保在运行jQuery之前填充DOM。您可以在它之外定义代码,只要它还没有被调用。(现在你是否应该是另一个问题)当你的答案只是“添加脚本标签”(这与函数的范围是闭包这一问题无关,这意味着他永远看不到它)时,我问了你一个问题。现在你已经编辑过了,所以我要取消负1。
<html>
<body>
    <head>
    <!-- include script files here.(jquery and custom script files) -->
    <script>
        $(document).ready(function() {
            getTicket();
        });
    </script>
    </head>
<body>
</html>
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>