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编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 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
ip签名探针
2006/10/09 PHP
php表单提交问题的解决方法
2011/04/12 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
python查看模块安装位置的方法
2018/10/16 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
python全栈知识点总结
2019/07/01 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
试用期自我评价范文
2015/03/10 职场文书
营业员岗位职责范本
2015/04/14 职场文书
今日说法观后感
2015/06/08 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
python Polars库的使用简介
2021/04/21 Python
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python