1

setInterval mehodを使用できません。理由はわかりませんが、このスクリプトの何が問題になっていますか。停止をクリックした後、テキストフィールドにカウンターiの結果が表示されません。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <title>test_setInterval</title>

        <script type="text/javascript">
            var i = 0;
            var interval;

            function start ()
            {
                interval = document.setInterval("i++", 1000);
            }

            function stop ()
            {
                document.clearInterval(interval);
                output.value = i;
            }
        </script>

    </head>

    <body>
        <input id="output" type="text" />
        <input id="start" type="button" value="start" onclick="start()" />
        <input id="stop" type="button" value="stop" onclick="stop()" />
    </body>
</html>
4

3 に答える 3

1
  1. clearIntervalおよびsetIntervalはウィンドウのメソッドであり、ドキュメントではありません。window.clearIntervalあなたはそれらをまたは単にと呼ぶことができますclearInterval
  2. evalは悪であるため、コードを含む文字列ではなく、setIntervalの最初の引数として関数を使用することをお勧めします。

これが動作するデモですhttp://jsfiddle.net/9cveg/

于 2012-07-01T11:50:43.253 に答える
1

関数内でi++をラップする必要があります。
また、ドキュメントを削除します。setIntervalの前。
ここで、これにはバグがあることに注意してください。「スタート」を2回押すと、i毎秒2単位ずつ上がります。start関数に
別の関数を追加することでバグを解決しました。clearInterval

http://jsfiddle.net/46kzu/3/

    function start ()
    {   
        clearInterval(interval);
        interval = setInterval(function(){++i;}, 1000);

    }

    function stop ()
    {
        clearInterval(interval);
        output.value = i;
    }
于 2012-07-01T11:54:37.143 に答える
0

定義によれば、setInterval()メソッドは関数を呼び出すか、指定された間隔(ミリ秒単位)で式を評価し、そのウィンドウのメソッドはドキュメントのメソッドではありません。

 <script type="text/javascript">

                var i = 0;
                var interval;

                function start ()
                {
                    interval = window.setInterval("i++", 1000);
                }

                function stop ()
                {
                    document.clearInterval(interval);
                    output.value = i;
                }

            </script>
于 2012-07-01T11:50:17.650 に答える