猿问

javascript 计时器的疑问

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
   function clock(){
      var time=new Date();               	  
      document.getElementById("clock").value = time;
   }
    var i = setInterval("clock()",1000); 
    var flag=0;
    function changetime(){
    	flag++;
    	if(flag%2==1){
    		document.getElementById("button").value = "stop";//这里注意要有""号的,否则会报错。这种地方老是出错!!!~~~
    		clearInterval(i);
    	}
    	else{
    		document.getElementById("button").value = "start";
    		setInterval("clock()",100);
    	}
    document.getElementById("flag").value=flag;
    }
</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
    <input type="button" value="变化值" id="button" onclick="changetime()" />
    <li><input type="text" value="flag值" id="flag" /></li>
  </form>
</body>
</html>

按照用flag标志位进行判断条件的思路,我哪里有问题啊?我把每次的flag值都显示出来了,但是只有页面刷新以后的第一次stop、第一次start按钮才起作用,以后点击button的时候会进行stop、start切换显示,但是

clearInterval(i);

setInterval("clock()",100);

不起作用了,高人帮我分析下我哪里没考虑到啊,谢谢。我按照每次的flag值进行运算,没有发现哪里出问题啊?

uwenhao2008
浏览 1530回答 2
2回答

Caballarii

else里的setInterval("clock()",100);要写成i=setInterval("clock()",100);要不然clearInterval没办法清楚i啊

ppo_YXWU

setInterval("clock()",100);要换成i = setInterval("clock()",1000);要不然clearInterval(i);只有第一次运行成功,后面i都没值的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答