js定时器与数码时钟案例

开启定时器

1、setInterval 间隔型
setInterval(参数一,参数二);

第一个参数是一个函数,第二个参数是时间(单位是毫秒)
意思就是每隔多长时间执行一次函数;

2、setTimeout 延时型

只执行一次

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>定时器</title><script>let show = () =>{alert('a');}/* 无限执行 */setInterval(show,1000);//第一个参数是一个函数,第二个参数是时间,单位是毫秒//意思就是每隔1秒钟执行一次show函数/* 只执行一次 */setTimeout(show,1000);</script></head>
</html>
两种定时器的区别

关于上述代码,setIterval(show,1000);无限弹出‘a’,而setTimeout(show,1000);只弹一次

停止定时器

想实现的功能:点击开始的时候弹’a’,点击关闭的时候停止。
首先准备两个按钮写上点击事件。
关于window.onload() 方法:
它用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。
为什么要加这个方法:因为代码是从上到下加载的,但是我们的js代码写在了body前面,如果不加会找不到元素(因为那个时候body没有加载到)。

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>定时器的开启与关闭</title><script>window.onload = ()=>{let oBtn1 = document.getElementById('btn1');let oBtn2 = document.getElementById('btn2');oBtn1.onclick = ()=>{setInterval(() => {alert('a');}, 1000);}}</script></head><body><input id="btn1" type="button" value="开启" /><input id="btn2" type="button" value="关闭" /></body>
</html>

这个时候点击开启已经可以实现弹’a‘啦,那么如何实现关闭功能。

clearInterval

因为以后我们的网页可能会有很多定时器,为了确保准确的关闭相应的定时器,我们需要给定时器加个名字,这里加的名字叫timer。
因为有些浏览器不支持弹窗的时候点击按钮,所以我们把时间间隔调长一点。

  <script>window.onload = ()=>{let oBtn1 = document.getElementById('btn1');let oBtn2 = document.getElementById('btn2');let timeroBtn1.onclick = ()=>{timer = setInterval(() => {alert('a');}, 3000);}oBtn2.onclick = ()=>{clearInterval(timer);}}</script>
clearTimeout

用于清除setTimeout

现在我们已经了解了定时器的功能,下面来做一个小东西

简易数码时钟案例

先看最终实现效果,比较有动力:

基本布局:

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>数码时钟</title><style>div{width: 500px;height: 100px;background-color: black;border-radius: 20px;margin:50px auto;}.img{display: flex;}img{flex: 1;}</style><script></script></head><body><div><div class="img">              <img src="img/0.png" alt=""><img src="img/0.png" alt=""><img src="img/10.png" alt=""><img src="img/0.png" alt=""><img src="img/0.png" alt=""><img src="img/10.png" alt=""><img src="img/0.png" alt=""><img src="img/0.png" alt=""></div></div></body>
</html>

img文件夹是这样的,名字对应数字,冒号名字是10。其中数字图片是用美图秀秀做的,很简单。
现在显示结果是这样的,布局完成啦

下面来说一下显示时间的实现原理:
我们先假设一个静态时间是07:34:21,那么如何将时间显示到时钟上呢?
我们定义一个字符串str,让它对应时间的数字顺序,因为我们的图片和数字是一一对应的,所以用一个for循环,将图片的路径修改成对应的数字就可以实现。

<script>window.onload = () => {let mynum = document.getElementsByTagName('img');let str = '073421' //假设时间是07:34:21for (let i = 0; i < mynum.length; i++) {mynum[i].src = 'img/' + str[i] + '.png';};}</script>

但是现在时间是固定的,而时钟的时间应该是实时的,我们用下面的方法来转化实时时间

 <script>//补零函数let zero=(n)=>{if(n<10){return '0'+n;}else{return ''+n;  }}window.onload = () => {let mynum = document.getElementsByTagName('img');let oDate = new Date();//得到当前时间let str = zero(oDate.getHours())+zero(oDate.getMinutes())+zero(oDate.getSeconds());alert(str);for (let i = 0; i < mynum.length; i++) {mynum[i].src = 'img/' + str[i] + '.png';};}</script>

补零函数:因为我们的时钟,时分秒都是显示两位数字,但是get到的是一位数,所以需要写一个函数,当是一位数时前面补一个零,而return’‘+n,这样的写法可以返回字符串型,直接get到的是数字。
现在可以实现 显示实时的时间,但是还不能动态实现,需要手动去刷新。
这个时候加入定时器就可以完美解决问题啦,运用定时器每一秒执行一次函数,就可以实现时间的动态更新。
下面是完整代码

<!DOCTYPE HTML>
<html><head><meta charset="utf-8"><title>数码时钟</title><style>.body {display: flex;width: 500px;height: 100px;background-color: black;border-radius: 20px;margin: 50px auto;justify-content: center;align-items: center;}.img {display: flex;}img {flex: 1;}.colon {background: url("img/10.png") no-repeat;flex: 1;width: 50px;}</style><script>//补零函数let zero = (n) => {if (n < 10) {return '0' + n;} else {return '' + n;}}window.onload = () => {let mynum = document.getElementsByTagName('img');let tick = () => {let oDate = new Date();let str = zero(oDate.getHours()) + zero(oDate.getMinutes()) + zero(oDate.getSeconds());/* alert(str); */for (let i = 0; i < mynum.length; i++) {mynum[i].src = 'img/' + str[i] + '.png';};}tick();setInterval(tick, 1000);}</script>
</head><body><div class="body"><div class="img"><img src="img/0.png" alt=""><img src="img/0.png" alt=""><div class="colon"></div><img src="img/0.png" alt=""><img src="img/0.png" alt=""><div class="colon"></div><img src="img/0.png" alt=""><img src="img/0.png" alt=""></div></div>
</body></html>

今天的分享就到这里啦~(¦3[▓▓] 晚安

js定时器与数码时钟案例(源码及备注)相关推荐

  1. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响

    各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响 ...

  2. freeRTOS滴答时钟相关源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程,网址:韦东山直播公开课:RTOS实战项目之实现多任务系统 第1节:裸机程序框架和缺陷_哔哩哔哩_bilibili和7天物联网训练营[第2期]7 ...

  3. jQuery+css3实现极具创意的罗盘旋转时钟效果源码

    效果 HTML代码 <!DOCTYPE html> <html><head><meta charset="UTF-8"><ti ...

  4. 3款动态网页时间时钟HTML5源码

    介绍: 3款动态网页时间时钟HTML5源码 网盘下载地址: http://kekewangLuo.cc/H5VLrhVBiis0 图片:

  5. ThreadLocal 简介 案例 源码分析 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. hantomjs能解析出html源码吗,网页源码是js js跳转后才是源码 怎么用易语言写 不使用超文本 有延时...

    网页源码是js js跳转后才是源码 怎么用易语言写 不使用超文本 有延时 附上js代码 var x="pathname@d@1552735436@@@7@div@@new@0xFF@3@@f ...

  7. jsp漂亮的登录界面源码_【案例+源码】详解MVC框架模式及其应用

    案例+源码]详解MVC框架模式及其应用 写在开头: 首先我们需要知道,框架模式.模式.开发模式是三种不同的概念,但他们的目的都一样:解耦! 1.关于MVC框架模型 MVC是三个单词的缩写: M,Mod ...

  8. 计算机毕业设计Node.js+uniapp安卓劳务派遣APP(源码+程序+lw+远程调试)

    项目运行 环境配置: Node.js最新版+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue. 项目技术: Express框架 + Node.js+ Vue 等 ...

  9. AidLux“换脸”案例源码详解 (Python)

    "换脸"案例源码详解 (Python) faceswap_gui.py用于换脸,可与facemovie_gui.py身体互换源码(上一篇文章)对照观看 打开faceswap_gui ...

最新文章

  1. 挖矿为什么要用显卡_Eth2拉开序幕,为何显卡大户却在加码挖矿?
  2. openshift_OpenShift上的Java EE工作流(技术提示#64)
  3. 大气自适应会员中心帝国cms模板
  4. TensorFlow官方教程翻译:导入数据
  5. 25个顶级PHP模板引擎【转】
  6. SAP License:SAP消息
  7. Android 查看內存使用
  8. 人体模型 java代码_java3d人体模型.doc
  9. 解决网页pdf禁止打印的方案
  10. 特征值+SVD分解+伪逆(广义逆)
  11. 如何快速搭建免费云服务器
  12. c语言中的整型常量和实型常量
  13. 为什么我不给孩子看国产动漫?看看这5部法国动漫,你就知道了!【转】
  14. LTE - 以IMS SIP消息为例深入解析RLC AM PDU收发过程
  15. 青岛大学计算机小姐姐,青岛大学举牌校花一夜爆红,评论区留下脏话:见不得别人好是病!...
  16. mixins(混入)
  17. EasyRecovery2022电脑文件文档数据恢复软件
  18. 研发效能提升如何层层推进?
  19. 2022 团体程序设计天梯赛 模拟赛 L2-1 盲盒包装流水线 (25 分)
  20. 加入控制变量后结果悲催了!

热门文章

  1. 37%原则如何优化我们做决定的时间
  2. 第三方物流学习(三)
  3. JS——事件冒泡与阻止事件冒泡
  4. 项目经理部的周例会中项目经理要做的事情
  5. ssh和scp远程连接指定端口
  6. eclipse新手快捷键
  7. 今天开始闭关(大后天出关 去珠海公干)
  8. chrome插件开发:content、background和popup三者之间的通信
  9. 函数cvtColor
  10. MasterAlign八相机非映射贴合对位系统调试说明书