0

次のような script タグを持つ Grails ビューがあります。

<script type="text/javascript">

        /* the first setInterval */
    setInterval(
      function()
      {
        console.log("Test...");
      },
      5000
    );

    setInterval(
      function()
      {
        console.log("Test... (2)");
      },
      5000
    );

    GetContent(1);
    GetContent(2);
    GetContent(3);
    GetContent(4);

    setInterval(
      Test0,
      5000
    );

    setInterval(
      Test2,
      5000
    );

    setInterval(
      ShowTime,
      1000 * 10
    );

    setInterval(
      Test3,
      1000 * 9
    );

    setInterval(
      Test1,
      1000 * 8
    );

</script>

最初の setInterval が実行されなかったのはなぜですか? どういうわけか、最初の JavaScript 関数呼び出しは実行されませんでした。関数呼び出しは html (ソースを表示) に表示されますが、実行されませんでした。

最初の setInterval をコピーして最初の setInterval のすぐ下に貼り付けると、2 つの同一の関数呼び出しがあり、そのうちの 1 つだけが実行されます。

コンソールは、5000 ミリ秒ごとに 1 回だけ "Test..." を書き込みます。

Grailsのバグですか?

4

1 に答える 1

0

私の質問への答えは、単にこれらの JavaScript 関数呼び出しをドキュメントの準備完了イベントにバインドすることです。

<script type="text/javascript">


$(document).ready(
  function()
  {

    /* the first setInterval */
    setInterval(
      function()
      {
        console.log("Test...");
      },
      5000
    );

    setInterval(
      function()
      {
        console.log("Test... (2)");
      },
      5000
    );

    GetContent(1);
    GetContent(2);
    GetContent(3);
    GetContent(4);

    setInterval(
      Test0,
      5000
    );

    setInterval(
      Test2,
      5000
    );

    setInterval(
      ShowTime,
      1000 * 10
    );

    setInterval(
      Test3,
      1000 * 9
    );

    setInterval(
      Test1,
      1000 * 8
    );

  };

</script>

これで、すべてが期待どおりに実行されました。

于 2013-06-12T01:49:51.880 に答える