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的mixin策略
Nov 19 Vue.js
Vue组件生命周期运行原理解析
Nov 25 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
python版本的仿windows计划任务工具
2018/04/30 Python
便捷提取python导入包的属性方法
2018/10/15 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
Weblogic的布署方式
2013/08/23 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
财政专业求职信范文
2014/02/19 职场文书
婚前协议书范本
2014/04/15 职场文书
本科毕业生自荐信
2014/06/02 职场文书
工作失误检讨书范文
2015/01/26 职场文书
预备党员个人总结
2015/02/14 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
七年级作文之英语老师
2019/10/28 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android