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 innerHTML、outerHTML、innerText、outerText的区别
Nov 24 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
jquery实现页面加载效果
Feb 21 Javascript
js中document.write和document.writeln的区别
Mar 11 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 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控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python自动识别文本编码格式代码
2019/12/26 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
甜点店创业计划书
2014/01/27 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
介绍信模板
2015/01/31 职场文书
《观潮》教学反思
2016/02/17 职场文书
JavaScript前端面试组合函数
2022/06/21 Javascript