Vue中用JSON实现刷新界面不影响倒计时


Posted in Javascript onOctober 26, 2020

本文实例为大家分享了Vue中用JSON实现刷新界面不影响倒计时的具体代码,供大家参考,具体内容如下

效果展示:

Vue中用JSON实现刷新界面不影响倒计时

部分代码

<el-form-item style="overflow:hidden" v-if="env === 'dev'">
 <el-input style="width:180px; float:left" v-model="ruleForm.nucCode" size="small" placeholder="请输入短信验证码" />
 <el-button class="message_btn" @click="getNumCode">
 <span v-if="isShowNucTime" style="font-size:16px" >{{Nuc_time}} S</span>
 <span v-else-if="!isShowNucTime && NucAgain" >重新获取验证码</span>
 <span v-else style="color:#7fbfff" >获取短信验证码</span>
 </el-button>
</el-form-item>
isShowNucTime:boolean = false;
NucAgain: boolean = false;
Nuc_code_freash: boolean = false; // 判断验证码是否过期
Nuc_time: number = 60;
end_time: number = 0;

private getCode() {
 let clicktime = new Date().getTime() + 60000;
 // 本地存储
 localStorage.setItem('myEndTime', JSON.stringify(clicktime));
 this.timeDown(clicktime);
 }

 // 验证码倒计时
 timeDown(counttime: any) {
 // 判断是否正在倒计时
 if (this.isShowNucTime) return;
 this.userChange = false;
 this.isShowNucTime = true;
 this.isGetNucCode = true;
 this.end_time = Number(localStorage.getItem('myEndTime'));
 this.Nuc_time = Math.ceil((this.end_time - new Date().getTime()) / 1000);
 let interval = setInterval(() => {
 this.Nuc_time--;
 if (this.Nuc_time < 1) {
 this.Nuc_time = 60;
 this.isShowNucTime = false;
 localStorage.removeItem('myEndTime');
 if (!this.userChange) {
 this.NucAgain = true;
 }
 clearInterval(interval);
 }
 }, 1000)
 }

private created(): void {
 let myEndTime= localStorage.getItem('myEndTime');
 myEndTime && this.timeDown(myEndTime);
 }

重要的代码部分

Vue中用JSON实现刷新界面不影响倒计时

Vue中用JSON实现刷新界面不影响倒计时

实现原理

1.首次加载页面 点击开始

1).获取当前时间戳与要倒计时的时间相加获得要停止计时的时间

2).用localStorage保存当前时间戳

3).通过js的setInterval定时器进行倒计时

4).当倒计时结束后 清除localStorage中保存的结束时间

2.当第n次进入页面或刷新页面时

1).首先判断localStorage中倒计时是否结束

2).没有结束则继续倒计时

3).如果结束则显示重新发送验证码

  • 主要运用了localStorage + new Date().getTime()
  • PS:本文只是展示部分代码,一味的复制粘贴并不能运行,还是搞清楚逻辑自己实现比较靠谱!

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
浅谈checkbox的一些操作(实战经验)
Nov 20 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
javascript新闻跑马灯实例代码
Jul 29 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
基于Node.js的大文件分片上传示例
Jun 19 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
Antd下拉选择,自动匹配功能的实现
Oct 24 Javascript
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
jQuery实现简单评论区功能
Oct 26 #jQuery
vue.js封装switch开关组件的操作
Oct 26 #Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
Oct 26 #Javascript
vue render函数动态加载img的src路径操作
Oct 26 #Javascript
vue实现简单的登录弹出框
Oct 26 #Javascript
让你30分钟快速掌握vue3教程
Oct 26 #Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 #Javascript
You might like
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
使用js画图之画切线
2015/01/12 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python实例一个类背后发生了什么
2016/02/09 Python
Python中正则表达式详解
2017/05/17 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python装饰器用法示例小结
2018/02/11 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
班组长工作职责
2013/12/25 职场文书
仓管岗位职责范本
2014/02/08 职场文书
便利店投资创业计划书
2014/02/08 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
接收函格式
2015/01/30 职场文书
国王的演讲观后感
2015/06/03 职场文书
公司老总年会致辞
2015/07/30 职场文书
教师听课学习心得体会
2016/01/15 职场文书
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python
MySQL分布式恢复进阶
2022/07/23 MySQL