JavaScript使用setTimeout实现倒计时效果


Posted in Javascript onFebruary 19, 2021

为了加强对JavaScript原生代码的编写能力,以及巩固setTimeout()的使用方法,制作了一个倒计时的demo,倒计时在现在的网站中算是一个常见的小功能,如果大家喜欢的话可以留下,就当作一个日常实用的小脚本。

实现思路

1、先获取小时值 将小时值减1开始进行倒计时 分钟59 秒数59
2、秒数的个位从9开始递减,当秒数个位小于0时,秒数的十位减1
3、秒数的十位小于0时,分钟的个位减1
4、分钟的个位小于0时,分钟的十位减1
5、分钟的十位小于0时,小时减1
6、小时数小于0后停止计时全部为0

实现代码

html

<p>倒计时:</p>
<span id="hour">5</span>
<span>:</span>
<span id="minuteTen">0</span>
<span id="minuteBit">0</span>
<span>:</span>
<span id="secondTen">0</span>
<span id="secondBit">0</span>

css

span{
 display: inline-block;
 width: 20px;
 height: 20px;
 background-color: #000000;
 color: #ffffff;
 text-align: center;
 }

JavaScript

function time(){
 /*小时*/
 var hourTxt = document.getElementById("hour");
 var hour = parseInt(document.getElementById("hour").innerHTML);
 /*分钟*/
 var minuteTenTxt = document.getElementById("minuteTen");
 var minuteBitTxt = document.getElementById("minuteBit");
 var minuteTen = parseInt(document.getElementById("minuteTen").innerHTML);
 var minuteBit = parseInt(document.getElementById("minuteBit").innerHTML);
 /*秒*/
 var secondTenTxt = document.getElementById("secondTen");
 var secondBitTxt = document.getElementById("secondBit");
 var secondTen = parseInt(document.getElementById("secondTen").innerHTML);
 var secondBit = parseInt(document.getElementById("secondBit").innerHTML);
 function start(){
 hour--;
 hourTxt.innerHTML = hour;
 minuteTen = 5;
 minuteTenTxt.innerHTML = minuteTen;
 minuteBit = 9;
 minuteBitTxt.innerHTML = minuteBit;
 secondTen = 5;
 secondTenTxt.innerHTML = secondTen;
 secondBit = 9;
 secondBitTxt.innerHTML = secondBit;

 /*secondBit开始自减*/
 function second(){
  secondBit--;
  secondBitTxt.innerHTML = secondBit;

  /*十秒过后*/
  if(secondBit < 0){
  secondTen--;
  secondTenTxt.innerHTML = secondTen;
  secondBit = 9;
  secondBitTxt.innerHTML = secondBit;
  /*继续倒计时*/
  setTimeout(second,1000);

  /*一分钟过后*/
  if(secondTen < 0){
   minuteBit--;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 5;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 9;
   secondBitTxt.innerHTML = secondBit;

   /*十分钟过后*/
   if(minuteBit < 0){
   minuteTen--;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 9;
   minuteBitTxt.innerHTML = minuteBit;
   }

   /*一个小时过后*/
   if(minuteTen < 0){
   hour--;
   hourTxt.innerHTML = hour;
   minuteTen = 5;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 9;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 5;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 9;
   secondBitTxt.innerHTML = secondBit;
   }

   /*倒计时结束*/
   if(hour < 0 ){
   hour = 0;
   hourTxt.innerHTML = hour;
   minuteTen = 0;
   minuteTenTxt.innerHTML = minuteTen;
   minuteBit = 0;
   minuteBitTxt.innerHTML = minuteBit;
   secondTen = 0;
   secondTenTxt.innerHTML = secondTen;
   secondBit = 0;
   secondBitTxt.innerHTML = secondBit;
   clearTimeout(second);
   clearTimeout(start);
   }
  }
  }else{
  setTimeout(second,1000);
  }
 }
 setTimeout(second,1000);

 }
 setTimeout(start,1000);
}

执行页面

JavaScript使用setTimeout实现倒计时效果

结束页面

JavaScript使用setTimeout实现倒计时效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 Javascript
JS getStyle获取最终样式函数代码
Apr 01 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
asp.net刷新本页面的六种方法总结
Jan 07 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
使用Bootstrap打造特色进度条效果
May 02 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 Javascript
react项目从新建到部署的实现示例
Feb 19 #Javascript
原生JavaScript实现幻灯片效果
Feb 19 #Javascript
JavaScript 实现继承的几种方式
Feb 19 #Javascript
JavaScript 生成唯一ID的几种方式
Feb 19 #Javascript
JavaScript实现打字游戏
Feb 19 #Javascript
JS+CSS实现动态时钟
Feb 19 #Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 #Javascript
You might like
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
javascript表单正则应用
2017/02/04 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python协程的用法和例子详解
2017/09/09 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
如何解决python多种版本冲突问题
2020/10/13 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
培训自我鉴定
2014/01/31 职场文书
小班秋游活动方案
2014/02/22 职场文书
上党课的心得体会
2014/09/02 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
长征观后感
2015/06/09 职场文书
个人收入证明范本
2015/06/12 职场文书
运动会主持人开幕词
2016/03/04 职场文书
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA