2012-07-01 58 views
1

我不能使用setInterval mehod,我不知道为什么。 这个脚本有什么问题,点击停止后它不会在文本字段中显示计数器i的结果。不能使用javaScript setInterval方法

<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> 

回答

1
  1. clearIntervalsetInterval是窗口的方法,而不是文件。你可以称他们为window.clearInterval或只是clearInterval
  2. 最好使用函数作为setInterval的第一个参数,而不是带代码的字符串,因为eval is evil

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

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> 
+0

这仍然无法工作,setInterval的将有'1'作为第一个参数没有方法,增加'i'。 – bjornd

1

您必须包装我++函数内部。
另外,删除文件。在setInterval之前。
现在,请注意这有一个错误。如果你按“开始”两次,i会每秒增加两个单位。
通过在启动函数中添加另一个clearInterval解决了该错误。

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

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

    } 

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