element 订单列表中 实现多个倒计时(vue+js)

简介: element 订单列表中 实现多个倒计时(vue+js)

实现场景:订单列表中多个倒计时(vue

<template>
  <div class="">
    <div v-for="(item,index) in list" :key="index">{{item.countDownTime }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
        list: [{endTime:"2020-11-02 15:06:36"},
        {endTime:"2020-11-12 16:06:36"},
        {endTime:"2020-11-08 04:06:36"},
        {endTime:"2020-11-17 19:06:36"}]
    }
  },
  created() {
    //这里应该写在请求接口拿到数据后,这里我使用模拟数据
   for (let i in this.list) {
     this.list[i].countDownTime = "";
     this.countDown(i);
   }
  },
  methods: {
  //倒计时
    countDownFun(time) {
      // console.log(time)
      let startTime = new Date(); //当前时间
      let end = new Date(time); //结束时间
      // console.log(end)
      let result = parseInt((end - startTime) / 1000); //计算出豪秒
      let d = parseInt(result / (24 * 60 * 60)); //用总共的秒数除以1天的秒数
      let h = parseInt((result / (60 * 60)) % 24); //精确小时,用去余
      let m = parseInt((result / 60) % 60); //剩余分钟就是用1小时等于60分钟进行趣余
      let s = parseInt(result % 60);
      //当倒计时结束时,改变内容
      if (result <= 0) {
        return "倒计时结束";
      }
      if (h < 10) {
        h = "0" + h;
      }
      if (s < 10) {
        s = "0" + s;
      }
      if (h == 0 && m == 0) {
        return "剩余" + s + "秒";
      } else if (h == 0) {
        return "剩余" + m + "分" + s + "秒";
      } else if(d == 0) {
        return "剩余" + h + "时" + m + "分" + s + "秒";
      } else {
        return "剩余" + d + "天" + h + "时" + m + "分" + s + "秒";
      }
    },
    // 定时器
    // 页面多个倒计时 归零时清除
    countDown(i) {
      let that = this;
      let item = that.list[i];
      that.list[i].countDownFn = setInterval(() => {
        //  console.log(that.countDownFun(item.endTime))
        if (that.countDownFun(item.countDownTime) == "倒计时结束") {
          clearInterval(that.list[i].countDownFn); //清除定时器
        } else {
          item.countDownTime = that.countDownFun(item.endTime);
          that.$set(
            that.list,
            item.countDownTime,
            that.countDownFun(item.endTime)
          );
        }
      }, 1000);
    }
  }
};
</script>
<style scoped lang="less">
</style>

最终效果

找工作,没有面试题?来看这里, 扫码查看1000+ 前端面试题

WX搜索 【MST题库】小程序查看

相关文章
|
3月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
112 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
7月前
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
152 2
|
7月前
|
JavaScript API
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
121 1
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
|
6月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
106 4
|
6月前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
126 0
|
7月前
|
JavaScript
js学习--商品列表商品详情
js学习--商品列表商品详情
76 2
|
8月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
8月前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
8月前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
7月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
402 0