我想用Javascript做一个计时器
这是我在onLoad()事件里面的代码
var date = new Date();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
document.myfrm.time.value = hour+":"+minute+":"+second;
setTimeout("timer()",1000);
现在我在页面添加了一个按钮
我想在点下按钮的时候让时间停止
再点下又继续
怎样才能做出这样的效果?
求高人指点......

解决方案 »

  1.   

    var t;
    function show(){
    if(t){clearTimeout(t);return}
    t=setTimeout("timer()",1000);
    }
    <input value="add" type="button"  onclick="show()"/>
      

  2.   

    clearTimeout
    不过你这个需求可能用 setInterval和clearInterval合适
    这样的吧?
    <form name="myfrm">
    <input type="text" name="time" />
    <input type="button" onclick="clearInterval(t)" value="停止" />
    <input type="button" onclick="t = setInterval('timer()',1000)" value="开始" />
    </form>
    <script>
    function timer(){
    var date = new Date();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
            document.myfrm.time.value = hour+":"+minute+":"+second;
    }
          var t =  setInterval("timer()",1000);
    </script>
      

  3.   

    <form name="myfrm">
        <input type="text" name="time" />
        <input value="add" type="button"  onclick="show()"/>
    </form>
    <script>
        function timer(){
            var date = new Date();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
            document.myfrm.time.value = hour+":"+minute+":"+second;
        }
    var t;
    function show(){
    if(t){clearInterval(t);return}
    t =  setInterval("timer()",1000);
    }
    t =  setInterval("timer()",1000);
    </script>
      

  4.   

    <form name="myfrm">
        <input type="text" name="time" />
        <input value="add" type="button"  onclick="show()"/>
    </form>
    <script>
    var t;
    var flag=false;
        function timer(){
    flag=true;
            var date = new Date();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
            document.myfrm.time.value = hour+":"+minute+":"+second;
        }
    function show(){
    if(flag){clearInterval(t);flag=false;return}
    t =  setInterval("timer()",1000);}
    t =  setInterval("timer()",1000);
    </script>