Vue 封装防刷新考试倒计时组件的实现


Posted in Javascript onJune 05, 2020

本文详细的介绍了防刷新考试倒计时组件 ,分享给大家,也给自己留个笔记,感兴趣的可以了解下

Vue 封装防刷新考试倒计时组件的实现

<!-- 考试倒计时组件 -->
<template>
 <div class="time">
  <p>00:{{timerCount2}}:{{timerCount1}}</p>
  <button @click="reset">重新计时</button>
 </div>
</template>


<script>
export default {
 name: "Time",
 data() {
  return {
   timeSeconds: 0,
   timeMinutes: 0,
   seconds: 59, // 秒
   minutes: 1, // 分
   timer: null
  };
 },
 methods: {
  num(n) {
   return n < 10 ? "0" + n : "" + n;
  },
  // 重新计时
  reset() {
   sessionStorage.removeItem("answered");
   window.location.reload();
   localStorage.removeItem("startTime1");
   localStorage.removeItem("startTime2");
   clearInterval(this.timer);
  },
  // 清除
  clear() {
   localStorage.removeItem("startTime1");
   localStorage.removeItem("startTime2");
   sessionStorage.setItem("answered", 1);
   clearInterval(this.timer);
  },
  // 倒计时
  timing() {
   let [startTime1, startTime2] = [ localStorage.getItem("startTime1"), localStorage.getItem("startTime2") ];
   let nowTime = new Date().getTime();
   if (startTime1) {
    let surplus = this.seconds - parseInt((nowTime - startTime1) / 1000);
    this.timeSeconds = surplus <= 0 ? 0 : surplus;
   } else {
    this.timeSeconds = this.seconds;
    localStorage.setItem("startTime1", nowTime); //存储秒
   }
   if (startTime2) {
    this.timeMinutes = startTime2;
   } else {
    this.timeMinutes = this.minutes;
    localStorage.setItem("startTime2", this.minutes); //存储分
   }
   this.timer = setInterval(() => {
    if ( this.timeSeconds == 0 && this.timeMinutes != 0 && this.timeMinutes > 0 ) {
     let nowTime = new Date().getTime();
     this.timeSeconds = this.seconds;
     localStorage.setItem("startTime1", nowTime);
     this.timeMinutes--;
     localStorage.setItem("startTime2", this.timeMinutes);
    } else if (this.timeMinutes == 0 && this.timeSeconds == 0) {
     this.timeSeconds = 0;
     this.clear();
     alert("考试时间到");
    } else {
     this.timeSeconds--;
    }
   }, 1000);
  }
 },
 mounted() {
  if (sessionStorage.getItem("answered") != 1) {
   this.timing();
  }
 },
 computed: {
  timerCount1() {
   return this.timeSeconds < 10 ? "0" + this.timeSeconds : "" + this.timeSeconds;
  },
  timerCount2() {
   return this.timeMinutes < 10 ? "0" + this.timeMinutes : "" + this.timeMinutes;
  }
 },
 destroyed() {
  // 退出后清除计时器
  if (this.timer) {
   clearInterval(this.timer);
  }
 }
};
</script>
<style scoped>
.time {
 color: #f72a3a;
 font-weight: bold;
 font-size: 26px;
}
</style>

到此这篇关于Vue 封装防刷新考试倒计时组件的实现的文章就介绍到这了,更多相关Vue 防刷新考试倒计时组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 事件冒泡简介及应用
Jan 11 Javascript
javascript 事件处理程序介绍
Jun 27 Javascript
js文件包含的几种方式介绍
Sep 28 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
javascript实现简单页面倒计时
Mar 02 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 #Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 #Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 #Javascript
JS删除数组指定值常用方法详解
Jun 04 #Javascript
Vue项目接入Paypal实现示例详解
Jun 04 #Javascript
Paypal支付不完全指北
Jun 04 #Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 #Javascript
You might like
PHP下MAIL的另一解决方案
2006/10/09 PHP
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP实现倒计时功能
2020/11/16 PHP
使用隐藏的new来创建对象
2011/03/29 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
理解javascript异步编程
2016/01/27 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python 反向输出字符串的方法
2018/07/16 Python
python操作kafka实践的示例代码
2019/06/19 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
pytorch进行上采样的种类实例
2020/02/18 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
实习计划书范文
2015/01/16 职场文书