用js制作数码时钟
实现效果

实现效果
图片素材

图片素材
原理分析
- 用
setInterval(fn, 1000)
来循环刷新图片。 - 用
date
对象的getHours()
、getMinutes()
、getSeconds()
方法来获取当前的时、分、秒,并且拼接成字符串。 - 通过字符串的处理来改变
<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 }
分析总结
-
更新
src
的整体思路是通过长度为6 的字符串str
和长度为6的aImg
数组对象一一对应,而获取的时分秒有可能是一位数,所以用toDou(num)
来补位。 -
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 }
-
由于setIteval(fn, 1000)的执行顺序是先延迟,再执行函数,所以在最后单独调用一下tick(),来防止刷新页面后的第一秒显示的是00:00:00。
-
还有一点,复习下
String
对象的charAt()
方法:charAt(index)
方法可返回指定位置的字符(长度为1的字符串),如果index
不在0
和str.length
之间将返回一个空字符串。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现