为了账号安全,请及时绑定邮箱和手机立即绑定

为啥我这个stop 按钮只有第一次有效 而start 一直有效

<!DOCTYPE HTML>

<html>

<head>

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

<title>定时器</title>

<style type="text/css">

#clock{background:red #339border:2px dashed blue }

h1{text-align:center }

h1{color:red}

.aa{color:blue}

</style>


</head>

<body>

<h1>显示时间</h1>


<script type="text/javascript">


 // var attime;

  function clock(){

var time=new Date();          

    attime=time.getHours()+":"+time.getMinutes()+":"+time.getSeconds();

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

 }

 var i=setInterval(clock,1000);

 function b()

 {var i=setInterval(clock,1000)}

 function c()

 {

var cc=clearInterval(i,1000)

}

  </script>

<form>

<input type="button" id="clock" size="50"  value="clock()"/>

</form>

<p class="aa">我有一所房子,面朝大海春暖花开。</p>

<p>喂马 劈柴 周游世界</p>

<input type="button" value="start" onClick="b()">

<input type="button" value="stop" onClick="c()">

</body>

</html>


正在回答

4 回答

 var i=setInterval(clock,1000);
 function b()
 {var i=setInterval(clock,1000)}
 function c()
 {
var cc=clearInterval(i,1000)
}


这段里面你的返回的i你定义了两次,一个在b()外,一个在b内,这样的话,就是定义两个i,而不是共用一个,你只是stop
了b()外面的那一个,里面的那个你无法去停止,因为c()里的i不能调用b()里面的i,你可以修改代码,把b()里面的var去掉就好了


0 回复 有任何疑惑可以回复我~

大神写的,很好用

<!DOCTYPE HTML>

<html>

<head>

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

<title>计时器</title>

<script type="text/javascript">

  var num=0;

  var i;

  function startCount(){

    document.getElementById('count').value=num;

    num=num+1;

    i=setTimeout("startCount()",1000);

  }

  flag=0;

  function stopCount(){

      if(flag==0){

          flag=1;

          document.getElementById('but').value="Stop";

      startCount();

      }else{

          clearTimeout(i);

          flag=0;

          document.getElementById('but').value="Start";

      }

  }

  function ce(){

      if(flag==0){

      document.getElementById('count').value="清除完毕!";

      num=0;

      setTimeout("document.getElementById('count').value=num",1000);

      }

  }

</script>

</head>

<body>

  <form>

    <input type="text" id="count" />

    <input type="button" id="but" value="Start" onclick="stopCount()" />

    <input type="button" value="Clear"  onclick="ce()" />

  </form>

</body>

</html>


0 回复 有任何疑惑可以回复我~
#1

三金伏梦

看来大神也不能停止时间啊。
2017-09-21 回复 有任何疑惑可以回复我~

你有两个设定计时器的方法而且返回值都赋给了i第一个是一开始启动的,第二个是一直在执行的,你需要把function b里的变量定义到function b函数的上边换一个变量名,就是这样

var result;
var i = setInterval(clock,1000);
function b()
{
    result = setInterval(clock,1000);
}
function c()
{
    clearInterval(result,1000);
}


0 回复 有任何疑惑可以回复我~

var i=setInterval('clock()',1000);

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为啥我这个stop 按钮只有第一次有效 而start 一直有效

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信