秒表效果

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

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    section {
        width: 400px;
        height: 200px;
    }

    div {
        width: 300px;
        height: 70px;
        border: 1px solid #000;
        line-height: 70px;
    }
</style>

<body>
    <section>
        <div>
            <span>00</span>时
            <span>00</span>分
            <span>00</span>秒
            <span>000</span>毫秒
        </div>
        <button class="startBn">开始</button>
        <button class="stopBn">暂停</button>
    </section>
</body>
<script>
function showTime(ele) {
    this.box = document.querySelector(ele)
    this.btn1 = this.box.querySelector(`.startBn`)
    this.btn2 = this.box.querySelector(`.stopBn`)
    this.spans = this.box.querySelectorAll(`span`)
    this.a = this.b = this.c = this.d = 0
    this.flag = false
    this.flag1 = false
    this.time = null
    this.startBn()
    this.stopBn()
    
}

showTime.prototype.startBn = function () {
    this.btn1.addEventListener(`click`, () => {
        let leng = this.spans.length
        if (!this.flag) {
            this.flag = true
            this.time = setInterval(() => {
                this.a += 5
                this.spans[leng - 1].innerHTML = this.a > 10 ? this.a : '0' + this.a          
                if (this.a >= 999) {
                    this.a = 0
                    this.b += 1
                    this.spans[leng - 1].innerHTML = this.a > 10 ? this.a : '0' + this.a
                    this.spans[leng - 2].innerHTML = this.b > 10 ? this.b : '0' + this.b
                }
                if (this.b >= 59) {
                    this.b = 0
                    this.c++
                    this.spans[leng - 2].innerHTML = this.b > 10 ? this.b : '0' + this.b
                    this.spans[leng - 3].innerHTML = this.c > 10 ? this.c : '0' + this.c
                }
            }, 5)
            this.btn1.innerHTML = "重置"
        } else {
            this.a = this.b = this.c = this.d = 0
            clearInterval(this.time)
            this.time - null
            this.spans.forEach(ele => {
                 ele.innerHTML = '00'
            });
            this.flag = false
            this.flag1 = false
            this.btn1.innerHTML = "开始"
            this.btn2.innerHTML = "暂停"
        }
    })
}

showTime.prototype.stopBn = function () {

    this.btn2.addEventListener(`click`, () => {
        let leng = this.spans.length
        
        if (!this.flag1 && this.flag) {
            clearInterval(this.time)
            this.time = null
            this.flag1 = true
            this.btn2.innerHTML = "继续"
        } else if (this.flag1 && this.flag) {
            clearInterval(this.time)
            this.time = null
            this.flag1 = false
            this.time = setInterval(() => {
                this.a += 1
                this.spans[leng - 1].innerHTML = this.a > 10 ? this.a : '0' + this.a
                if (this.a >= 999) {
                    this.a = 5
                    this.b += 1
                    this.spans[leng - 1].innerHTML = this.a > 10 ? this.a : '0' + this.a
                    this.spans[leng - 2].innerHTML = this.b > 10 ? this.b : '0' + this.b
                }
                if (this.b >= 59) {
                    this.b = 0
                    this.c++
                    this.spans[leng - 2].innerHTML = this.b > 10 ? this.b : '0' + this.b
                    this.spans[leng - 3].innerHTML = this.c > 10 ? this.c : '0' + this.c
                }
            }, 5)
            this.btn2.innerHTML = "暂停"
        }
    })
}
let time = new showTime("section")
</script>

</html>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值