问答详情
源自:8-4 取消计时器clearInterval()

为什么把变量time声明放在函数体外,按start就不能进行计时?

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>计时器1</title>

<script type="text/javascript">

 var time=new Date();

   function clock(){      

   //var time=new Date();  

      document.getElementById("clock").value = time;

   }  

   var i;

   function start() {

  clearInterval(i);

i=setInterval(clock,100); 

    }

function stop() {

clearInterval(i);

}

</script>

</head>

<body>

  <form>

    <input type="text" id="clock" size="50"  />

    <input type="button" value="Stop" onclick="stop()" />

    <input type="button" value="Start" onclick="start()" />

  </form>

</body>

</html>


提问者:lee_fp 2017-07-15 13:37

个回答

  • 慕村4009116
    2017-07-25 23:25:10

    你time 移出这个函数外面,那么这个time的赋值就只执行过一次,那就是页面加载好的那一次,而clock函数 执行的过程中调用的是没有变化过的time; 你要让没100毫秒获取的是当前的time,所以time要放入函数中;


  • 慕田峪7359874
    2017-07-17 20:47:35

    因为var time=new Date();获取的是当前时间,如果想计时,就必须多次执行这行代码,每次都获取的是当前的时间,然后写入到input框中,这就是为什么要放入function 中 通过setInterval()多次触发。   如果放在函数外面,那就只能触发一次,也就谈不上时间的改变了,自然就无法计时了

  • 慕粉1344615
    2017-07-15 14:21:46

    ~.~!