不能使用javaScript setInterval方法

时间:2012-07-01 11:47:44

标签: javascript

我不能使用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>

3 个答案:

答案 0 :(得分:1)

  1. clearIntervalsetInterval是窗口的方法,而不是文档。您可以将其称为window.clearInterval或仅clearInterval
  2. 最好使用function作为setInterval的第一个参数,而不是带代码的字符串,因为eval is evil
  3. 这是一个有效的演示http://jsfiddle.net/9cveg/

答案 1 :(得分: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;
    }

答案 2 :(得分: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>