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

来源:8-11 Location对象

慕先生5291929

2017-08-03 07:20

<!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回答

  • 姓白名黑
    2018-03-25 23:09:59
     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去掉就好了


  • qq_灰色头像_17
    2017-09-05 10:20:36

    大神写的,很好用

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


    三金伏梦

    看来大神也不能停止时间啊。

    2017-09-21 22:29:28

    共 2 条回复 >

  • 轻浮与傲慢
    2017-08-06 16:03:30

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

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


  • qq_天涯彼岸_03147812
    2017-08-03 09:12:29

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题