用js制作数码时钟

实现效果


实现效果

图片素材


图片素材

原理分析

  1. setInterval(fn, 1000)来循环刷新图片。
  2. date对象的getHours()getMinutes()getSeconds()方法来获取当前的时、分、秒,并且拼接成字符串。
  3. 通过字符串的处理来改变<img>src,从而达到改变图片显示的目的。

代码

复制代码
 1 <body style="background:black; color: white; font-size:50px; padding: 50px 80px; ">
 2     <img src="images/0.png" />
 3     <img src="images/0.png" />
 4     :
 5     <img src="images/0.png" />
 6     <img src="images/0.png" />
 7     :
 8     <img src="images/0.png" />
 9     <img src="images/0.png" />
10 </body>
11         window.onload = function () {
12             //获取img元素数组
13             aImg = document.getElementsByTagName('img');
14 
15             function tick(){
16                 var oDate = new Date();
17 
18                 // 获取当前的时分秒拼接成长度为6的字符串
19                 var str = toDou(oDate.getHours()) + 
20                           toDou(oDate.getMinutes()) + 
21                           toDou(oDate.getSeconds());
22 
23                 // 遍历所有img,更新src
24                 for(var i = 0; i < aImg.length; i++){
25                     // 第i张图片的src对应str的第i为
26                     aImg[i].src = "images/" + str.charAt(i) + ".png";
27                 }
28             }
29 
30             // 设置定时器
31             setInterval(tick, 1000);
32 
33             // 初始化
34             tick()
35         }
36 
37         // 为了保证str的长度是6,用toDou()来为一位数补0
38         function toDou(num) {
39             return num < 10 ? "0" + num : "" + num;
40         }
复制代码

分析总结

  1. 更新src的整体思路是通过长度为6 的字符串str和长度为6的aImg数组对象一一对应,而获取的时分秒有可能是一位数,所以用toDou(num)来补位。

  2. toDou (num)中用的是三元运算符,简化了代码。

    复制代码
     1 //用if esle
     2 function toDou(num){
     3     if(n<10){
     4         return "0"+num;
     5     }else{
     6         return ""+num;
     7     }
     8 }
     9 //用三元运算符
    10 function toDou(num) {
    11     return num < 10 ? "0" + num : "" + num;
    12 }
    复制代码

     

  3. 由于setIteval(fn, 1000)的执行顺序是先延迟,再执行函数,所以在最后单独调用一下tick(),来防止刷新页面后的第一秒显示的是00:00:00。

  4. 还有一点,复习下String对象的charAt()方法:
    charAt(index)方法可返回指定位置的字符(长度为1的字符串),如果index不在0str.length之间将返回一个空字符串。




posted @   小奔的早晨  阅读(4709)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示