当前位置:首页 > 技术 > 正文内容

JavaScript倒计时实现方案

访客 技术 2026年6月14日 1

基础时长倒计时实现

data() {
    return {
      timer: null,
      minutes: 0,
      seconds: 0,
      duration: null,
    }
  },

created() {
    this.initializeTimer(125); // 设置倒计时总秒数
 },


methods: {
    initializeTimer(totalSeconds){
      this.minutes = Math.floor(totalSeconds / 60);
      this.minutes = this.minutes < 10 ? `0${this.minutes}` : this.minutes;
      console.log('当前分钟数--',this.minutes);
      this.seconds = Math.floor(totalSeconds % 60);
      this.timer = setInterval(this.countdownTick,1000);
    },
    countdownTick(){
      this.seconds--;
      this.seconds < 10 && (this.seconds = '0' + this.seconds);
      // this.seconds = this.seconds < 10 ? `0${this.seconds}` : this.seconds;
      if(this.seconds.length >= 3){
        this.seconds = 59;
        this.minutes = `0${(Number(this.minutes)-1)}`;
      }
      if(this.minutes.length >= 3){
        this.minutes='00';
        this.seconds='00';
        clearInterval(this.timer);
      }
      this.duration = `${this.minutes}分钟${this.seconds}秒`;
      console.log(this.minutes+"分钟"+this.seconds+"秒");
    },
}

基于时间戳的倒计时方案

data() {
    return {<br></br>

timer: null,``` currentTime: null, } },

created() {


this.timer = setInterval(this.updateCountdown,1000);```
 },

methods: {
    updateCountdown() {
      // 获取当前时间
      let now = new Date().getTime();
      // 设置截止时间
      let targetDate = new Date("2021/3/15 00:00:00");
      let deadline = targetDate.getTime();
      // 计算时间差
      let timeDiff = deadline - now;
      // 定义变量存储倒计时数值
      let days, hours, mins, secs;
      if (timeDiff >= 0) {
        days = Math.floor(timeDiff/1000/60/60/24);
        hours = Math.floor(timeDiff/1000/60/60%24);
        mins = Math.floor(timeDiff/1000/60%60);
        secs = Math.floor(timeDiff/1000%60);
      }else {<br></br>     clearInterval(this.timer); // 时间过期时清除定时器<br></br>    }
// 更新显示内容
      this.currentTime = `${mins}分${secs}秒`;<br></br>

if(mins == 0 && secs == 0) { clearInterval(this.timer); // 时间结束时清除计时器 this.$router.push('/register/invalid'); }``` }, }


简化版60秒倒计时实现

data() { return { timerCount: 60, countdownTimer: null, } }, startCountdown (){
   this.countdownTimer = setTimeout(() => { this.timerCount--; if (this.timerCount < 1) { this.timerCount = 60; this.isAvailable = false; clearTimeout(this.countdownTimer); } else { this.startCountdown(); } }, 1000); },和


基于时间区间的倒计时处理

data(){ return { timer: null, displayTime: '30 : 00', remainingSeconds: 1 * 60, }},```
<br></br>  startCountdown() {
      // 获取时间戳
      let startTimestamp = this.currentTimestamp; // 页面存储的开始时间
      let endTimestamp = this.expirationTimestamp; // 页面存储的结束时间<br></br>    if (startTimestamp < endTimestamp) {
        let duration = (endTimestamp - startTimestamp)/1000;
        this.remainingSeconds = duration;
        this.countdown();
      } else {
        // 处理时间过期逻辑
      }
    },

  countdown(){
      this.timer = setInterval(() => {
        this.remainingSeconds--;
        this.displayTime = this.formatDuration(this.remainingSeconds);
        if(this.remainingSeconds <  1) {
          clearInterval(this.timer);
          // 处理倒计时结束逻辑
        }
      }, 1000);
    },

  formatDuration(seconds) {
      // 转换为分秒格式
      let hours = parseInt(seconds / 60 / 60 % 24)
      hours = hours < 10 ? '0' + hours : hours
      let minutes = parseInt(seconds / 60 % 60)
        minutes = minutes < 10 ? '0' + minutes : minutes
      let secs = parseInt(seconds % 60)
        secs = secs < 10 ? '0' + secs : secs
      // 返回格式化结果
      return `${minutes} : ${secs}`;
    },

参考资料:https://www.cnblogs.com/heizai002/p/6862418.html

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。