计时器-秒表代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #div1 {
            width: 300px;
            height: 400px;
            background: skyblue;
            margin: 100px auto;
            text-align: center;
        }

        #count {
            width: 200px;
            height: 150px;
            line-height: 150px;
            margin: auto;
            font-size: 40px;
        }

        #div1 input {
            width: 150px;
            height: 40px;
            background: orange;
            font-size: 25px;
            margin-top: 20px
        }
    </style>
</head>

<body>
<div id="div1">
    <div id="count">
        <span id="id_H">00</span>
        <span id="id_M">00</span>
        <span id="id_S">00</span>
    </div>
    <input id="start" type="button" value="开始">
    <input id="pause" type="button" value="暂停">
    <input id="stop" type="button" value="停止">
</div>
<script>
    //可以将查找标签节点的操作进行简化  var btn = getElementById('btn')
    function $(id) {
        return document.getElementById(id)
    }
    window.onload = function() {
        //点击开始建 开始计数
        var count = 0
        var timer = null //timer变量记录定时器setInterval的返回值
        $("start").onclick = function() {
            timer = setInterval(function() {
                count++;
                console.log(count)
                // 需要改变页面上时分秒的值
                console.log($("id_S"))
                $("id_S").innerHTML = showNum(count % 60)
                $("id_M").innerHTML = showNum(parseInt(count / 60) % 60)
                $("id_H").innerHTML = showNum(parseInt(count / 60 / 60))
            }, 1000)
        }
        $("pause").onclick = function() {
            //取消定时器
            clearInterval(timer)
        }
        //停止记数  数据清零  页面展示数据清零
        $("stop").onclick = function() {
            //取消定时器
            $("pause").onclick()
            // clearInterval(timer)
            //数据清零  总秒数清零
            count = 0
            //页面展示数据清零
            $("id_S").innerHTML = "00"
            $("id_M").innerHTML = "00"
            $("id_H").innerHTML = "00"
        }

        //封装一个处理单位数字的函数
        function showNum(num) {
            if (num < 10) {
                return '0' + num
            }
            return num
        }
    }
</script>
</body>

</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #showTime
        {
            width: 300px;
            height: 60px;
            font-size: 60px;
            line-height: 60px;
        }
    </style>
</head>
<body>
<div>
    <div id="showTime">00:00:00</div>
    <button id="startBn">启动</button>
    <button id="restBn">复位</button>
</div>
<script>
    //——————
    var time,showTime,startBn,restBn,pauseDate;
    //布尔开关
    var bool=false;
    //暂停的累计时间
    var pauseTime=0;

    init();
    function init() {
        showTime=document.getElementById("showTime");
        startBn=document.getElementById("startBn");
        restBn=document.getElementById("restBn");
        startBn.addEventListener("click",clickHandler);//开始按钮 ~ 暂停按钮
        restBn.addEventListener("click",clickHandler);//复位按钮
        setInterval(animation,16);
    }

    //转化时间函数
    function animation() {
        if(!bool) return;
        //前时间减去上次开启时间减去暂停累计时间
        var times=new Date().getTime()-time-pauseTime;
        var minutes=Math.floor(times/60000);//毫秒转化为分钟
        var seconds=Math.floor((times-minutes*60000)/1000);//已知分钟
        var ms=Math.floor((times-minutes*60000-seconds*1000)/10);//
        showTime.innerHTML=
            (minutes<10 ? "0" +minutes : minutes)+":"
            +(seconds<10 ? "0"+seconds :seconds)+":"
            +(ms<10 ? "0"+ms : ms);
    }

    //点击时的事件
    function clickHandler(e) {
        e= e || window.event;
        if(this===startBn){
            bool=!bool;
            if(bool){
                this.innerHTML="暂停";
                //如果我们上一次暂停时间是空,表示没有暂停过,因此,直接返回0
                //如果上次的暂停时间是有值得,用当前毫秒数减去上次的毫秒数,这样就会得到暂停时间
                pauseTime+=(!pauseDate ? 0 : new Date().getTime()-pauseDate);
                if(time) return;
                time=new Date().getTime();
                return;//是为bool判断跳出
            }

            this.innerHTML="启动";
            pauseDate=new Date().getTime();
            return;//是为this是否等于startBn判断跳出
        }
        startBn.innerHTML="启动";
        pauseTime=0;
        pauseDate=null;
        bool=false;
        time=0;
        showTime.innerHTML="00:00:00";
    }

</script>
</body>
</html>

 

posted @ 2021-04-29 10:27  皮军旗  阅读(438)  评论(0编辑  收藏  举报