1

jqueryブロック内でアラートを出すと、他の方法で実行され、出力が表示されないのはなぜですか?

  <script type="text/javascript">
(function map() {
var test = document.createElement('script'); 
    test.type = 'text/javascript'; 
    test.async = true;
test.src = 'myjsfile.js';
var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(test, s);
});
  </script>

プラグインを作成しようとしていますが、スクリプトは myjsfile.js を呼び出し、上記のコード内に alert() を追加した場合にのみ、その中の関数を実行します。

4

2 に答える 2

2

後で実行する関数を作成しようとしているのか、それとも自己実行関数を作成しようとしているのかわかりません。

自己実行関数を実行しようとしている場合、構文は次のとおりです。

(function () {
    alert("hello");
})();

後で実行する関数を作成しようとしている場合:

function myfunction() {
    alert("hello");
}

myfunction();// This is the "later" execution

お役に立てれば!

于 2012-08-12T06:06:11.033 に答える
1

表示されているコードがドキュメントの最初のスクリプト タグである場合、これが問題を引き起こしている可能性があります。

var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(test, s);

頭や体に直接追加してみませんか?私の意見では、もっと簡単です。

(document.getElementsByTagName('head')[0]
 || document.getElementsByTagName('body')[0]).appendChild(test);

また、実際に関数を呼び出していないため、出力が得られない場合があります。これを試して:

<script type="text/javascript">
    (function map() {
        // Your code here
    })(); // Add () to call your function

    // Or, just call it the old fashioned way when you're done.
    map();
</script>

注意すべきもう 1 つのことmapは、jQuery 内の関数であるため、名前空間と関数の呼び出し方法に注意してください。

于 2012-08-12T06:07:35.103 に答える