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 相关文章推荐
javascript IFrame 强制刷新代码
Jul 23 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
javascript实现点击后变换按钮显示文字的方法
May 13 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
Jun 19 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
Vue.js 中的 v-model 指令及绑定表单元素的方法
Dec 03 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
JsonServer安装及启动过程图解
Feb 28 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
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方法调用模式与函数调用模式简例
2011/09/20 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
SVG描边动画
2017/02/23 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
js常见遍历操作小结
2019/06/06 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
python八大排序算法速度实例对比
2017/12/06 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python中的for循环
2018/09/28 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
opencv+python实现均值滤波
2020/02/19 Python
python3注册全局热键的实现
2020/03/22 Python
python中PyQuery库用法分享
2021/01/15 Python
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
关于运动会的稿件
2014/02/02 职场文书
带薪年假请假条
2014/02/04 职场文书
技校毕业生自荐信
2014/06/03 职场文书
大学生学年个人总结
2015/02/15 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
spring boot中nativeQuery的用法
2021/07/26 Java/Android