js制作秒杀倒计时效果:
需求:将期望时间和现在的时间差显示在页面上,并让这个时间递减,形成倒计时的样子
实际运用场景:这个倒计时时间可能是距离秒杀结束时间or距离生日倒计时时间
图示:
思路:
定义两个时间对象,一个返回当前时间,另一个设置目标时间,两个时间对象相减,差值是时间戳(间隔毫秒数),将时间戳换算成秒数(就是代码:var sub = Math.ceil((target-current)/1000)),然后将差值秒数换算成天+时+分+秒的格式,用对象接收(一般返回数据都用对象接收,会很清晰),然后注册一个间隔定时器,让它帮我们自动刷新当前时间,然后返回差值对象
完整代码:
<body><div id="box"></div><script>//定义目标时间对象var targetDate = new Date("2022/11/11")function diffTime(current,target){var sub = Math.ceil((target-current)/1000)//时间戳//计算天数var day = parseInt(sub/(60*60*24))//计算小时var hours = parseInt(sub%(60*60*24)/(60*60))//计算分钟var minutes = parseInt(sub%(60*60)/60)//计算秒var seconds = sub%60var obj = {day:day,hours:hours,minutes:minutes,seconds:seconds}return obj}//用间隔定时器帮助自动输出,不用手动刷新setInterval(function(){//定义返回当前时间对象var currentDate = new Date()var res = diffTime(currentDate,targetDate)// console.log(res)//结果返回对象// document.write(`京东双11-${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`)// console.log(box)box.innerHTML = `京东双11-${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`},1000) </script>
</body>
结果:
代码解释:
首先是定义两个时间对象,不传参数时返回当前时间,传参数是返回目标时间:
有人就会想计算它们的差值,直接就让他们相减就行了,然后再进行下面的转换为天数什么的,这里我想说的是我们可以把这些代码封装在函数里面,当你后面重复利用这些代码时,直接调用函数就可以了,代码简洁,思路也很清晰,下面我们就把他们放在函数里面去:
代码:var sub = Math.ceil((target-current)/1000)含义是:因为我们target-current目标时间减去当前时间,结果是毫秒数,我们这里"/1000"是换算成秒,后面方便计算天时分等,然后前面加上了Math.celi是向上取整的意思。然后下面就是求天时分秒,parseInt是舍小数取整数部分,例如:parseInt(3.87)=3;然后是计算小时的那个:var hours = parseInt(sub%(60*60*24)/(60*60)),sub%(60*60*24)是对天取余就是小时呀,然后再除以秒和小时直接的换算单位:60*60;下面的分和秒依次类推:对小时取余就是分钟、对分钟取余就是秒。最后用对象接收,返回对象。
然后就是用下面这段代码直接输出,因为我们已经计算完多少天以及时分秒了:
document.write(`京东双11-${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`)
(注:不懂斜引号和$()用法的可以看我上一个文章:js的ES6中的模板字符串( ``/$() )_陌一一的博客-CSDN博客)
但是当一段代码写完后输出的结果是固定的天时分秒,时间都不变化的,除非我们在刷新加载一次,因为每次刷新的当前时间不一样,所以结果会不一样。那就有人疑惑了,为啥不刷新时间是不变了,因为我们刚开始定义的(var currentDate = new Date())当前时间是它代码执行到那个定义时间对象时的时间,后面就不会再变了呀,就像刻舟求剑一样,刚开始你刻的剑的地方已经不是现在剑所在的位置了,所以差值是不会变的,那需要我们不断的手动刷新重新加载获取当前的时间才会变,但是自己手动刷新太麻烦了吧,我想要让它自己变,那就需要用到间隔定时器帮我们了,让它间隔1s就获取一下当前的时间,然后打印一下差值,结果不就自己变了吗,所以就有了下面这段代码:
setInterval(function(){//定义返回当前时间对象var currentDate = new Date()var res = diffTime(currentDate,targetDate)document.write(`京东双11-${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`)document.write("<br>")
},1000)
我们想让它每间隔1s获取一下当前时间和差值,所以我们要把之前我们最上面定义的当前时间和获取差值的,也就是这段代码 :var currentDate = new Date()和这段代码:var res = diffTime(currentDate,targetDate)拿下来放在间隔定时器setInterval里面。
但是打印结果是这样子的:
虽然结果是在变,但它一直在界面上输出, 我想要那种动态的,在一个位置上倒计时的,下一次结果覆盖上一次结果的,这时候我们就要了解一个东西了:
结果:
我们写一个标签,标签身上有id选择器,然后我们输出一下这个id选择器的名称,结果如上所示,我们得到的其实是一个对象,不是一个标签了,然后我们再用这个对象去访问这个innerHTML方法,这个方法的含义就是我把一个值赋值给它,下一次再赋值就覆盖上次的值,所以我们就直接像下面这样做:
先创建一个div标签,然后里面放id选择器,然后用:id选择器名.innerHTML去实现下一次结果覆盖上一次结果的效果。
js制作秒杀倒计时效果:相关推荐
- 基于 js 制作一个倒计时
目录 前言: 项目效果展示: 代码实现思路: 使用方法: 重点功能讲解: 实现代码: 总结: 前言: 很多网站在做活动时,会出现一个截止时间倒计时的提示,跟随此文做一个倒计时吧! 项目效果展示: 代码 ...
- HTML+JavaScript实现网页秒杀倒计时效果
HTML+JavaScript实现网页秒杀倒计时效果 <!DOCTYPE html> <html><head><meta charset="utf- ...
- Html+Css+js实现春节倒计时效果(移动端和PC端)
目录 前言 导语 效果预览 html部分 移动端样式(mobile.css) pc端样式(style.css) js部分 效果演示 移动端 pc端 总结 下载地址 前言 我是歌谣 我有个兄弟 巅峰的时 ...
- html+css+js制作结婚倒计时网页模板(520/七夕情人节/程序员告白)
❉ html+css+javascript制作结婚倒计时网页模板(520/七夕情人节/程序员告白) 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/圣诞节/元旦节跨年/程序员表白, 引用了C ...
- js制作的倒计时特效
"倒计时"这一短语来源于1927年德国的幻想故事片<月球少女>,在这部影片中,导演弗里兹为了增加艺术效果,扣人心弦,在火箭发射的镜头里设计了"9.8.7.-- ...
- html+css+js制作时间倒计时(时分秒)简易版
效果图展示: 1.先了解获取时间的函数 Date():获取当前系统时间 //获取当前系统时间 var date = new Date(); 2.获取时间的方法 getHours():获取小时值 get ...
- qq空间html倒计时,用JavaScript做一个秒杀倒计时效果
现在电子商务红红火火的,什么秒杀,限时什么的,JavaScript的倒计时用得很广泛.下面就来做一个倒计时效果,先来看效果. 效果演示 随便写的代码,还有待改进.下面是源代码: JavaScript ...
- js怎么实现倒计时效果
js怎么做倒计时,其实很简单.话不多说,直接上菜 使用 new Date() 获取当前时间, Date.parse()方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UT ...
- 原生JS 实现日期倒计时效果
每逢佳节倍思亲 时间滴答滴答的逝去 离团聚的日子又近了一点 写一个简单的倒计时效果 让我们的团聚在一点点看见中来临 思路: 1.首先获取当前时间 2.获取所需时间 2.获取时间差(所需时间减去当前时间 ...
最新文章
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第10题——大臣的旅费
- sqlite4java下载_使用sqlite4java的UnsatisfiedLinkError,没有sqlite4java-osx-amd64
- linux下C调用lua的第一个程序
- C#中的深度学习:了解神经网络架构
- 23 岁创业,28 岁成为福布斯亚洲青年领袖,这个“刷脸的男人”有点牛
- SignalR+Redis,SignalR+Sqlserver集群部署应对海量链接
- Linux 服务器性能出问题,排查下这些参数指标
- Word 里面如何设置多级标题
- 完成 Orange3 数据挖掘 汉化版
- 趋势突破策略与期权——以Dual Thrust为例
- Unity摄像机平滑处理跟随
- 【Python】Windows微信清理工具
- 实现一个简单的H5领红包的动画
- 一场云端的“神仙打架”:BAT加华为的影响未来之争
- php imagick 图片裁切,php Imagick , 怎么使用Imagick裁切图片
- dg怎么了(最近dg怎么了)
- 【前端-Js基础方法】字符串常用方法汇总
- spss基础-5.8
- 大学计算机实验六文件管理与磁盘恢复,做“文件管理与磁盘恢复”实验完成以下实验报告表并提交...
- 淘宝/天猫API:seller_info-获得淘宝店铺详情
热门文章
- CSS3 用动画实现无缝滚动图效果
- 为python安装matlab引擎
- UDEC v4.00.153 1CD(完全安装版)
- 深度学习论文随记(二)---VGGNet模型解读-2014年(Very Deep Convolutional Networks for Large-Scale Image Recognition)
- OpenHarmony-标准设备系统代码操作梳理
- Android 根据不同时区,转换时间
- 智慧工厂之ZigBee定位技术下的化工厂人员定位解决方案-新导智能
- 2009年世界顶级杀毒软件排名
- linux下的CPU、内存、IO、网络的压力测试工具与方法介绍
- 获取windows当前桌面背景图 - 来自360浏览器的壁纸