vue实现同时设置多个倒计时


Posted in Vue.js onMay 20, 2021

本文实例为大家分享了vue实现同时设置多个倒计时的具体代码,供大家参考,具体内容如下

html如下:

<div class="home">
    <tbody>
      <tr v-for="(item, index) in bargainGoods" :key="index">
        <td v-text="item.down + Djs_timeList(item.countDown)"></td>
      </tr>
    </tbody>
</div>

js如下:

export default {
  data() {
    return {
      bargainGoods: [],
      total: 0,
      page: 1,
      serverTime: 0,
      timer: ""
      // hostUrl: this.$hostUrl
    };
  },
  //用于数据初始化
  created: function() {
    // 获取数据
    this.goods();
    // 获取服务器时间
    this.findServiceTime();
  },
  methods: {
    goods: function() {
      var _this = this;
      _this.$axios({
        url: "goods/pageGoods",
        data: {
          current: -1,
          activityStatus: "",
          limit: -1,
          status: "SALE"
        },
        success: response => {
          _this.bargainGoods = response.items;
          _this.Djs_time();// 调用定时器
          //  以下是我处理的后台返回数据   开始时间和结束时间,页面显示用的
          if (_this.bargainGoods.length != 0) {
            for (var key in _this.bargainGoods) {
              var hour = 0;
              var startime = 0;
              if (_this.bargainGoods[key] != null) {
                _this.bargainGoods[key].countDown = "";
                _this.bargainGoods[key].down = "";

                // 结束时间
                hour = _this.bargainGoods[key].overTime;
                startime = _this.bargainGoods[key].activityStartTime;
                hour = hour.replace(/-/g, "/");
                hour = new Date(hour).getTime();
                startime = startime.replace(/-/g, "/");
                startime = new Date(startime).getTime();
                // 如果结束时间大于当前时间

                if (hour > _this.serverTime && startime < _this.serverTime) {
                  var hourtime = hour - _this.serverTime;
                  if (hourtime > 0) {
                    _this.bargainGoods[key].down = "结束倒计时:";
                    _this.bargainGoods[key].countDown =
                      _this.bargainGoods[key].overTime;
                  }
                } else if (startime > _this.serverTime) {
                  var starhourtime = startime - _this.serverTime;
                  if (starhourtime > 0) {
                    _this.bargainGoods[key].down = "开始倒计时:";
                    _this.bargainGoods[key].countDown =
                      _this.bargainGoods[key].activityStartTime;
                  }
                } else {
                  _this.bargainGoods[key].down = "已结束";
                  _this.bargainGoods[key].countDown = "";
                }
                // console.log(_this.bargainGoods);
              }
            }
            _this.bargainGoods = _this.bargainGoods;
          }
        }
      });
    },
    // 获取服务器时间
    findServiceTime() {
      var _this = this;
      _this.$axios({
        url: "serverTime/getDateTime",
        success: function(res) {
          _this.serverTime = res.item;
        }
      });
    },

    Djs_time: function() {
      this.timer = setInterval(() => {
        this.serverTime = this.serverTime + 1000;
      }, 1000);
    },

    Djs_timeList: function(itemEnd) {
      //  此处 itemEnd 的日期是年月日时分秒
      var endItem = new Date(itemEnd).getTime(); //获取列表传的截止时间,转成时间戳
      var nowItem = this.serverTime; //获取当前时间
      var rightTime = endItem - nowItem; //截止时间减去当前时间
      if (rightTime > 0) {
        //判断剩余倒计时时间如果大于0就执行倒计时否则就结束
        var dd = Math.floor(rightTime / 1000 / 60 / 60 / 24);
        var hh = Math.floor((rightTime / 1000 / 60 / 60) % 24);
        var mm = Math.floor((rightTime / 1000 / 60) % 60);
        var ss = Math.floor((rightTime / 1000) % 60);
        var showTime = dd + "天" + hh + "小时" + mm + "分" + ss + "秒";
      } else {
        var showTime = "";
      }
      return showTime;
    },

  },
    //离开页面后清除定时器
  destroyed() {
    clearInterval(this.timer);
  }
};

效果如下:

vue实现同时设置多个倒计时

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

Vue.js 相关文章推荐
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
Vue实现小购物车功能
Dec 21 Vue.js
全面解析Vue中的$nextTick
Dec 24 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
Vue和Flask通信的实现
Vue Element UI自定义描述列表组件
使用这 6个Vue加载动画库来减少我们网站的跳出率
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
详解vue中v-for的key唯一性
解读Vue组件注册方式
May 15 #Vue.js
如何理解Vue简单状态管理之store模式
May 15 #Vue.js
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
JAVA/JSP学习系列之七
2006/10/09 PHP
一个目录遍历函数
2006/10/09 PHP
关于Intype一些小问题的解决办法
2008/03/28 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
Array对象方法参考
2006/10/03 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Vue header组件开发详解
2018/01/26 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
Python入门篇之编程习惯与特点
2014/10/17 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
python在协程中增加任务实例操作
2021/02/28 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
学生喝酒检讨书
2014/02/06 职场文书
职务聘任书范文
2014/03/29 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android