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 相关文章推荐
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
jquery lazyload延迟加载技术的实现原理分析
Jan 24 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
JavaScript通过字符串调用函数的实现方法
Mar 18 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
Sep 04 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
Vue数据双向绑定原理实例解析
May 15 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 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
如何提高数据访问速度
2016/12/26 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
《走一步再走一步》教学反思
2014/02/15 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
小学生期末评语大全
2014/04/21 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
Oracle用户管理及赋权
2022/04/24 Oracle
Redis入门基础常用操作命令整理
2022/06/01 Redis