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+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
vue穿梭框实现上下移动
Jan 29 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
详解Vue router路由
Nov 20 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
vue3不同环境下实现配置代理
May 25 Vue.js
vue实现在data里引入相对路径
Jun 05 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
php链表用法实例分析
2015/07/09 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python新手实现2048小游戏
2015/03/31 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
简历自荐信
2013/12/02 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
人事专员工作职责
2014/02/22 职场文书
2014年教育工作总结
2014/11/26 职场文书
入党积极分子考察意见
2015/06/02 职场文书