JavaScript使用setTimeout实现倒计时效果
为了加强对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);
}
执行页面

结束页面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
echarts中X轴显示特定个数label并修改样式的方法详解
最近在使用Echarts图表遇到些特别的需求,想着给大家整理下,所以下面这篇文章主要给大家介绍了关于echarts中X轴显示特定个数label并修改样式的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-07-07
TextArea设置MaxLength属性最大输入值的js代码
TextArea中限制最大输入长度,实现的方法种种,我们不在一一介绍,今天本文推荐一种简单实用的方法,需要的朋友可以参考下2012-12-12
promise和co搭配生成器函数方式解决js代码异步流程的比较
这篇文章主要介绍了promise和co搭配生成器函数方式解决js代码异步流程的比较,在es6中引入的原生Promise为js的异步回调问题带来了一个新的解决方式co模块搭配Generator函数的同步写法,更是将js的异步回调带了更优雅的写法。感兴趣的小伙伴们可以参考一下2018-05-05
怎么理解wx.navigateTo的events参数使用详情
这篇文章主要介绍了怎么理解wx.navigateTo的events参数使用详情,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-05-05


最新评论