js制作简易秒表效果详细讲解、开始、暂停与结束(定时器制作和时间戳制作)

2023年1月29日10:55:20

首先,css和html

   <section>
        <div class="minute"></div>
        <div class="second"></div>
        <div class="mill"></div>
    </section>
    <button class="start">开始</button>
    <button class="stop">暂停</button>
    <button class="over">结束</button>
   div {
            width: 100px;
            height: 50px;
            font-size: 40px;
            border: 1px solid red;
            float: left;
            line-height: 50px;
            text-align: center;
        }

js代码

        //获取元素
        var minutes = document.querySelector('.minute')
        var seconds = document.querySelector('.second')
        var mills = document.querySelector('.mill')
        var stop = document.querySelector('.stop')
        var div = document.querySelector('div')
        var over = document.querySelector('.over')
        var start = document.querySelector('.start')
        //在全局变量中设置分、秒、和毫秒、还有定时器,方便后边做清除
        var timer = null
        var mill = 0
        var s = 0
        var m = 0
        //点击开始按钮
        start.addEventListener('click', function () {
            //创建定时器之前先清除一下定时器,以免重复按开始按钮导致定时器过多,速度过快
            clearInterval(timer)
            //创建定时器
            timer = setInterval(function () {
                //毫秒每次加一
                mill += 1
                //当毫秒加到250的时候进行判断
                if (mill === 250) {
                  //加到250是,毫秒数恢复为0,秒数加一
                    mill = 0
                    s += 1
                    //判断当秒数加到60的时候
                    if (s === 60) {
                    //秒数恢复为0,分钟加一
                        s = 0
                        m += 1
                    }
                }
                //将所加的毫秒、分钟、秒都加到div中
                minutes.innerHTML = m
                seconds.innerHTML = s
                mills.innerHTML = mill
            })

        })
        //按下停止按钮,停止定时器,但是里面是的数值并不会恢复为0
        //停止按钮
        stop.addEventListener('click', function () {
            clearInterval(timer)
        })
        //按下清空按钮,停止定时器,让所有的数为零,并将div中的数字清空
        //清空按钮
        over.addEventListener('click', function () {
            clearInterval(timer)
            mill = 0
            s = 0
            m = 0
            minutes.innerHTML = m
            seconds.innerHTML = s
            mills.innerHTML = mill
        })

此外,我们还可以利用事件戳制作秒表,事件戳制作会更精准,

先获取事件戳(这个事件戳会一直随着事件走而走)

然后创建点击事件,获取点击时候的时间戳,(这个事件戳就是点击时候的时间,不会发生改变)

然后利用先获取的时间戳减去点击的时间戳,得到开始的事件。

js代码如下(html和css样式跟上面相同)

        //获取样式
        var minutes = document.querySelector('.minute')
        var seconds = document.querySelector('.second')
        var mills = document.querySelector('.mill')
        var stop = document.querySelector('.stop')
        var div = document.querySelector('div')
        var over = document.querySelector('.over')
        var start = document.querySelector('.start')
        //创建初始的时间戳、定时器
        var newTime = new Date().getTime()
        var timer = null
        var now ;
        //点击事件
        start.addEventListener('click', function () {
            //开始定时器
            timer = setInterval(function () {
                //获取点击时的时间戳
                now = +new Date
                //两个时间戳想减,得到相差的时间,就是点击后秒表的时间
                var timers = now - newTime
                //进行取证,取模,得到分和秒
                var minute = parseInt(timers / 1000 / 60 % 60)
                //如果小于10,在前面加上0,(美观)
                var minute = minute < 10 ? '0' + minute : minute
                var second = parseInt(timers / 1000 % 60)
                //如果小于10,在前面加上0,(美观)
                var second = second < 10 ? '0' + second : second
                var mill = parseInt(timers % 250)
                //将时间添加到div中
                minutes.innerHTML = minute
                seconds.innerHTML = second
                mills.innerHTML = mill
            }, 20)
        })
        //停止按钮
        stop.addEventListener('click', function () {
            clearInterval(timer)
        })
     

如发现问题欢迎留言!!!(你我都在加强的路上)

  • 作者:jasmine 莉
  • 原文链接:https://blog.csdn.net/Cat_LIKE_Mouse/article/details/120080691
    更新时间:2023年1月29日10:55:20 ,共 2349 字。