前端JavaScript——秒表实现

秒表实现这一部分主要是通过JavaScript代码来实现的,在这里重点说JavaScript

图长这样:

 页面结构样式代码如下:

HTML:

<body>
    <div id="div1">
        <div id="count">
            <span id="id_H">00</span><span>:</span>
            <span id="id_M">00</span><span>:</span>
            <span id="id_S">00</span>
        </div>
        <input id="start" type="button" value="开始">
        <input id="pause" type="button" value="停止">
        <input id="end" type="button" value="结束">
    </div>
</body>

CSS:

<style>
        #div1{
            width: 300px;
            height: 400px;
            background: blanchedalmond;
            margin: 70px auto;
            text-align: center;
        }
        #count{
            width: 200px;
            height: 100px;
            line-height: 100px;
            margin: auto;   /*让计数的这个块居中*/
        }
        #div1 input{
            width: 150px;
            height: 40px;
            background-color: yellow;
            font-size: 25px;
            margin: auto;
        }
    </style>

JavaScript部分:

秒表:

1.点击开始:通过设置一个1000毫秒的定时器,然后再定时器中通过一个number型的变量计算进行到第几秒了,通过对这个数字进行数学计算就可以得到对应的时分秒,然后再页面上显示出来

2.点击停止:只需做一个清除定时器的操作进可以了,

3.结束:也就是将定时器计的数清零,页面上也数据也清零就可以了

【注】:在这里有一个需要注意的地方,如果只是简单做了这三步,会发现,当你多次点击了开始之后,计数器的速度会增加;

解决办法:在设置定时器之前(站在已经点了一次定时器的角度来看,当我们要在点击一次定时器的时候,是不是要先将上一个定时器清一下,再开始?),需要清掉上一个计时器,这样的话就不会出现定时器速度加快的问题了。

JavaScript代码:

<script>
        // 可以将查找标签节点的操作进行简化
        function $(id){
            return document.getElementById(id);
        }
        window.onload = function(){
            var count = 0; //开始计数以后,累加的总秒数
            var timer = null;
            $("start").onclick = function(){
            clearInterval(timer);
                timer = setInterval(function(){// 如果在这个位置写var,相当于timer是这个start点击事件定义的一个变量,在其他点击事件中不能使用
                    count++;
                    // 需要改变页面上的时分秒数
                    $("id_S").innerHTML = showNum(count % 60);
                    $("id_M").innerHTML = showNum(parseInt(count / 60) % 60);
                    $("id_H").innerHTML = showNum(parseInt(count / 3600 ));
                },1000);
            }
            $("pause").onclick = function(){
                // 取消定时器
                clearInterval(timer);
            }
            $("end").onclick = function(){
                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;
                }else{
                    return num;
                }
            }
    </script>

其他函数讲解:

1.因为要多次获取标签,所以可以将获取标签这句代码用一个符号封装起来,(符号里面好像只能用$符号,大家可以尝试一下),

2.showNum函数:将所有数据都以两位数的形式来表示, 如果没有showNum函数,当num为个位数时,前面会没有0 ,加了0有更好的体验效果。

 

 

【注】:至于为什么要在script里面使用window.onload?

代码是顺序执行的,也就是从上往下,很明显是先执行JavaScript代码,在执行HTML代码的,使用window.onload可以避免某些效果出不来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值