1

私は JavaScript に非常に慣れていないため、setTimeout コマンドで何かを行うことができないようです。これは以前に何度も尋ねられたことを知っていますが、過去2時間かけて以前のすべてのケースを調べましたが、まだうまくいきません. これが私が現時点で持っているものです:

<html>
    <script type="text/javascript">

    var i = 0;
    function aloop() {
        document.write(i);
        i++;
    }

    function afunction() {
        if (i <= 12) {
            setTimeout(aloop(), 1000);
            afunction();
        }
    }

    </script>

    <form>
    <input type=submit value="Click me!" onClick="afunction()">
</html>

これを機能させるために何をすべきか誰か教えてもらえますか?

4

3 に答える 3

4

setTimeout関数呼び出しの戻り値ではなく、関数を に渡します。

setTimeout(aloop,1000);
于 2012-12-06T20:53:10.647 に答える
1

何が機能しないかについては説明していませんがi、1000 ミリ秒間隔で書き込みたいと思います。

これを行う:

<html>
 <!-- you're missing your head tags -->

<head>
    <title> my page </title>

    <script type="text/javascript">
    var i=0;
    function aloop() {
          // don't use document.write after the DOM is loaded
        document.body.innerHTML = i;
        i++;
        afunction(); // do the next call here
    }
    function afunction() {
        if (i<=12) {
                 //     v---pass the function, don't call
            setTimeout(aloop,1000);

      //    afunction();  // remove this because it'll call it immediately
        }
    }
    </script>
</head>

<!-- you're missing your body tags -->
<body>
    <form>
        <input type=submit value="Click me!" onClick="afunction()">
    </form> <!-- you're missing your closing form tag --> 
</body>
</html>
于 2012-12-06T20:59:42.997 に答える
1

問題は、関数をキューに入れるのではなく、関数を呼び出していることです。

setTimeout(aloop, 1000) いいえ setTimeout(aloop(), 1000);

于 2012-12-06T20:53:25.247 に答える