0

私は「一日の終わりの脳のおなら」を抱えており、この単純なコードを機能させることができません。私がやりたいのは、使用している別のスクリプトで関数を再利用することだけです。

たとえば、JavaScript の AI には次のようなものがあります。

function rollLink(){
    //code that does something amazing
};
rollLink();

別の JS ファイル (B と呼びましょう) で、rollLink関数を単純な AJAX 呼び出しの一部として再利用しようとしています。

$.ajax({
    url: bla,
    data: bla,
    success:function(data) {
        $('#hero').append( data );
        rollLink();
    }
});

しかし、 rollLink() is not definedというエラーが表示されます。誰かが私のやり方でエラーを指摘できますか?

編集:

あ、情報不足ですみません。詳しく説明します:

  • スクリプト A がメインの JS ファイルです。私のWPテーマのすべてのページで実行され、functions.phpファイルを介してキューに入れられます。
  • スクリプト B は、私が構築している WP プラグイン内にあります。

出力されるフッターの例を次に示します。

<script type='text/javascript' src='http://localhost/wordpress/wp-content/themes/mytheme/javascripts/script_a.js'></script>
<script type='text/javascript' src='http://localhost/wordpress/wp-content/plugins/myplugin/script_b.js'></script>
</body>
</html>
4

4 に答える 4

0

これは、その関数を定義しているファイルよりも前に、関数を使用するファイルが読み込まれることが原因である可能性があります。画像ファイルをロードしてキャンバスに表示しようとしたときに同じ問題を経験しました。その理由は、使用するファイルが大きすぎて、ロードに時間がかかり、そのファイルの前に他のファイルがロードされるためです。変数が定義されていないことを示しています。

解決:

できることは、ブール変数 funcionReady を作成し、それを false として初期化し、関数の定義内でその値を true に変更し、その関数を使用する前に、変数が true かどうかを確認し、true の場合は実行し、else を待つことです。

于 2014-07-22T07:25:29.067 に答える
0

おそらく、次のように でラップしてみてscript_b.jsください。$(document).ready

$(document).ready(function(){
    $.ajax({
        url: bla,
        data: bla,
        success:function(data) {
            $('#hero').append( data );
            rollLink();
        }
    });
}
于 2014-01-03T18:29:17.343 に答える
-3

ページに両方のファイルをロードする必要があり、rollLink を定義したファイルは ajax 呼び出しの前にロードする必要があります。それはすべて基本的なケースです。

于 2013-11-11T18:35:43.703 に答える