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

関数は、 jQuerygetTicketクロージャー (無名関数) のコンテキスト (スコープ) でのみ定義されます。代わりに、グローバル スコープで定義します (「関数パラメーター」としてではなく、ファイル内の他の場所で)。

そのスコープの変数が必要な場合は、それらを名前空間 (オブジェクト) にカプセル化するか、 として宣言し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

関数を呼び出す前に、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 に答える
0

に追加<script type="text/javascript src="external.js"></script>headます。

次に、ドキュメントが完全に読み込まれるまで待つ必要があります。

問題は、コードが次のように実行されることです。

  • external.js を実行する
  • ドキュメントの読み込みが完了していないため、関数は定義されていません
  • 未定義の関数を呼び出します
  • ドキュメントは準備ができています

IMHO $(document).ready 内で関数を定義するのは良い考えではないと思います。通常はその関数を定義してから、$(document).ready 内で呼び出す方が簡単です。

于 2013-02-16T08:47:13.823 に答える