分析:
1.倒计时需要获取现在的时间和理想倒中倒计时的时间做比较
2.获取到时间,之后主要做时分秒的处理
3.获取到dom节点,把处理好的时间,放入dom节点内
废话少说,直接上代码:
<template>
<div class="about">
<div id="countdown"></div>
</div>
</template>
<script lang="ts" setup>
import {onMounted,ref} from "vue";
onMounted(()=>{
let Time = 60*60*1000;//一个小时的室秒数
chazhis(Time)
})
let chazhis = (Time:number) =>{
console.log('+++++++++++++++++++倒计时中');
//获取dom
let Dom:any = document.getElementById("countdown");
// 获取当前时间
let currentTime :number = new Date().getTime();
//开始时间
let startTime:number = 1713531400000
console.log(startTime,'+++++开始时间')
//计算剩余时间
let elapsedTime:number = currentTime - startTime
console.log(elapsedTime,'+++++剩余时间')
let remainingTime = Time + elapsedTime;
console.log(remainingTime,'+++++剩余时间')
let timer = setInterval(()=>{
remainingTime -=1000; //每秒减去1000秒
//计算剩余时间中的小时数、分钟数和秒数
let hours = addLeadingZero(Math.floor((remainingTime % (1000 * 60* 60 * 24))/(1000 * 60* 60)));
let minutes = addLeadingZero( Math.floor((remainingTime % (1000*60*60))/(1000 * 60)));
let seconds = addLeadingZero( Math.floor((remainingTime % (1000 * 60))/ 1000));
Dom.textContent =`${hours}:${minutes}:${seconds}`; //把值赋给dom节点
//当倒计时为零执行操作
if (remainingTime <= 0){
//清除定时器
clearInterval(timer)
Dom.textContent =`倒计时结束`;
}
},1000)
}
let addLeadingZero = (number:any)=>{ //补零操作
return number <10 ? "0"+number :number;
}