本文详细解析如何使用JavaScript原生代码结合setTimeout实现一个倒计时功能。通过手动获取并更新小时、分钟、秒的DOM元素,利用parseInt解析数值,并在每秒递归调用setTimeout来驱动倒计时逻辑,直至归零停止。
倒计时功能概述
为了提升JavaScript原生代码的编写能力,并深入掌握函数的应用,这里制作了一个倒计时示例。倒计时功能在现代网页开发中十分常见,如果读者觉得实用,可以将其保存为日常开发中的辅助脚本。
实现思路
实现思路
核心逻辑如下: 1. 首先获取小时数值,将其减1作为倒计时的起始状态,此时分钟和秒均设为59。 2. 秒数的个位从9开始递减,当秒数个位小于0时,秒数的十位减1。 3. 当秒数的十位小于0时,分钟的个位减1。 4. 当分钟的个位小于0时,分钟的十位减1。 5. 当分钟的十位小于0时,小时数减1。 6. 当小时数小于0时,停止计时,所有数值归零。
代码实现
实现代码
HTML结构
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样式
CSS样式
span{
display: inline-block;
width: 20px;
height: 20px;
background-color: #000000;
color: #ffffff;
text-align: center;
}
JavaScript逻辑
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);
}
效果展示
执行页面效果

结束页面效果

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