1

我不能使用 setInterval 方法,我不知道为什么。该脚本有什么问题,单击停止后,它不会在文本字段中显示计数器 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

您必须将 i++ 包装在一个函数中。
另外,删除文档。在 setInterval 之前。
现在,请注意这有一个错误。如果按两次“开始”,i每秒将上升两个单位。通过在启动功能中
添加另一个解决了该错误。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 回答
1
  1. clearInterval并且setInterval是窗口的方法,而不是文档。您可以将它们称为window.clearInterval或只是clearInterval.
  2. 最好使用 function 作为 setInterval 的第一个参数,而不是带有代码的字符串,因为eval 是 evil

这是一个工作演示http://jsfiddle.net/9cveg/

于 2012-07-01T11:50:43.253 回答
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 回答