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() {
// 退出后清除计时器
更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119134934
最新文章
- nginx实现单服务代理多域名
- 祝贺 Linux 25 岁:25 个关于 Linux 的惊人真相!【转载】
- sql 语句 事务
- css巧妙实现分隔线
- python---list列表
- Android UI系列-----时间、日期、Toasts和进度条Dialog
- 关于actionscript中新建一个sprite,设置大小(宽高)的问题。
- Uva 11754 Code Feat
- SQL SERVER NVARCHAR字段INSERT 中文乱码问题解决
- Android寒假实训云笔记总结——欢迎页
- NOI2014 起床困难综合症
- 在MVC5中的使用Ninject
- JDBC 连接数据库的步骤
- 学习Makefile
- java设定一个日期时间,加几分钟(小时或者天)后得到新的日期
- ArcGIS Server服务器监控
- 不能够连接到主机(名称为localhost)上的MySQL服务”
- PHP画矩形,椭圆,圆,画椭圆弧 ,饼状图
- 牛客训练三:处女座和小姐姐(三)(数位dp)
- 201709015工作日记--IntentService使用