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 相关文章推荐
js判断浏览器的比较全的代码
Feb 13 Javascript
永不消失的title提示代码
Feb 15 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
javascript中的正则表达式使用指南
Mar 01 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
Angular4绑定html内容出现警告的处理方法
Nov 03 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 Javascript
vue 避免变量赋值后双向绑定的操作
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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP加密解密函数详解
2015/10/28 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python数据结构之图的应用示例
2018/05/11 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python批量下载抖音视频
2019/06/17 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
人事主管的岗位职责
2013/11/16 职场文书
高一家长会邀请函
2014/01/12 职场文书
大一新生检讨书
2014/10/29 职场文书
消费者理赔投诉书
2015/07/02 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
宣传稿格式范文
2015/07/23 职场文书
暑假生活随笔
2015/08/15 职场文书