Vue实现倒计时按钮

这次给大家带来Vue实现倒计时按钮,Vue实现倒计时按钮的注意事项有哪些,下面就是实战案例,一起来看一下。

在项目开发里,我们经常会遇到发送验证码、点击了之后有60秒倒计时的按钮,很常见却也很简单,但是在写这个按钮的时候有个别地方还要注意下,今天写出来,如有问题欢迎指正!

完成的效果如下:

Vue实现倒计时按钮 

为了更快显示出效果,我把时间设成了5秒。按钮在点击之后会出现倒计时,同时按钮变为不可点击状态,样式也发生变化,鼠标悬浮上的样子也会发生变化。

接下来我们用代码来实现:

...data () {  return {   content: '发送验证码',  // 按钮里显示的内容   totalTime: 60      //记录具体倒计时时间  }},methods: {  countDown() {    let clock = window.setInterval(() => {      this.total--      this.content = this.total + 's后重新发送'    },1000)  }}

登录后复制

在data里加了两条数据,一条用来记录时间,一条用来盛放倒计时按钮的具体内容。在countDown函数里我们用了setInterval定时器,每隔一秒totalTime减1,同时更改按钮里显示的内容。 在window.setInterval里用了箭头函数,因为它会自动绑定外面的this,所以就不用先存下this了。

效果如下图:

Vue实现倒计时按钮 

但是这个按钮还有一些问题:

点击了按钮之后过了1秒就直接从59秒开始倒计时了,中间的60不见了
倒计时的时候还可以点击
还没有清除倒计时

接下来需要继续完善countDown函数来解决这些问题。

countDown () { this.content = this.totalTime + 's后重新发送' //这里解决60秒不见了的问题 let clock = window.setInterval(() => {  this.totalTime--  this.content = this.totalTime + 's后重新发送'  if (this.totalTime < 0) {     //当倒计时小于0时清除定时器    window.clearInterval(clock)    this.content = '重新发送验证码'    this.totalTime = 60    } },1000)},

登录后复制

上面的代码解决了60不见的问题,同时当totalTime小于0时清除同时器、重新设置按钮里的content、将totalTime重置为60以便下次使用。

倒计10秒的效果:

Vue实现倒计时按钮 

发现bug,多次点击之后,倒讲时速度变快,这是因为每次点击都会启动一个setInterval,这些setInterval都会减少totalTime。解决的方法也很简单:简单节流一下就好了,就是第一次点击按钮之后让countDonw这个函数的代码不可执行,等到倒计时结束之后才可以再次执行。

data () {  return {   content: '发送验证码',   totalTime: 10,   canClick: true //添加canClick  }}...countDown () { if (!this.canClick) return  //改动的是这两行代码 this.canClick = false this.content = this.totalTime + 's后重新发送' let clock = window.setInterval(() => {  this.totalTime--  this.content = this.totalTime + 's后重新发送'  if (this.totalTime < 0) {   window.clearInterval(clock)   this.content = '重新发送验证码'   this.totalTime = 10   this.canClick = true  //这里重新开启  } },1000)}

登录后复制

在data里添加canClick,默认是true,如果canClick为true,countDown里的代码可以执行,如果是false就不行。每执行一次就将canClick设为false,而只在倒计时结束的时候再改为true。这样刚才的问题就没有了。

Vue实现倒计时按钮 

到这里其实就差不多了,不过还可以调整下样式:

登录后复制

效果:

Vue实现倒计时按钮 

这个倒计时按钮十分简单,但是我第一次写的时候还是写的很乱,而且那个时候还不知道函数节流的概念。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

vue之.sync修饰符使用详解

jQuery$. 和 $().使用详解

以上就是Vue实现倒计时按钮的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2766915.html

(0)
上一篇 2025年3月8日 11:28:11
下一篇 2025年3月8日 11:28:21

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue数据传递实现步骤详解

    这次给大家带来vue数据传递实现步骤详解,vue数据传递实现的注意事项有哪些,下面就是实战案例,一起来看一下。 组件(Component)是 Vue.js 最强大的功能。组件可以封装可重用的代码,通过传入对象的不同,实现组件的复用,但组件传…

    2025年3月8日 编程技术
    200
  • vue axios请求拦截实现思路(附代码)

    这次给大家带来vue axios请求拦截实现思路(附代码),实现vue axios请求拦截的注意事项有哪些,下面就是实战案例,一起来看一下。 axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP …

    编程技术 2025年3月8日
    200
  • 右侧带索引通讯录实现(附代码)

    这次给大家带来右侧带索引通讯录实现(附代码),右侧带索引通讯录实现的注意事项有哪些,下面就是实战案例,一起来看一下。 通过jquery.charfirst.pinyin.js实现点击字母自动定位。实现动态加载通讯录数据。 主要代码如下: 通…

    2025年3月8日 编程技术
    200
  • 不使用router-link实现页面跳转

    这次给大家带来不使用router-link实现页面跳转,不使用router-link实现页面跳转的注意事项有哪些,下面就是实战案例,一起来看一下。 1、给父页面跳转的地方设置事件 //原来的页面上展示的信息 编辑 //带参数进行编辑 删除 …

    2025年3月8日
    200
  • vue实现验证码倒计时功能

    这次给大家带来vue实现验证码倒计时功能,vue实现验证码倒计时功能的注意事项有哪些,下面就是实战案例,一起来看一下。     上网上搜了一下,也把他们的代码试了一下,自己出了很多问题。所以,需要写一篇基础入门的文章,避免后面人采坑。   …

    2025年3月8日
    200
  • node+token实现验证

    这次给大家带来node+token实现验证,node+token实现验证的注意事项有哪些,下面就是实战案例,一起来看一下。 最近研究了下基于token的身份验证,并将这种机制整合在个人项目中。现在很多网站的认证方式都从传统的seesion+…

    编程技术 2025年3月8日
    200
  • vue下拉列表实现方法

    这次给大家带来vue下拉列表实现方法,vue下拉列表实现的注意事项有哪些,下面就是实战案例,一起来看一下。 喜欢的请反手来个star,有issue的欢迎提出 安装 cnpm install vue-droplist –save 登录后复制…

    2025年3月8日
    200
  • JS怎样实现运算符重载

    这次给大家带来JS怎样实现运算符重载,JS实现运算符重载的注意事项有哪些,下面就是实战案例,一起来看一下。 最近要做数据处理,自定义了一些数据结构,比如Mat,Vector,Point之类的,对于加减乘除之类的四则运算还要重复定义,代码显得…

    编程技术 2025年3月8日
    400
  • 热模块替换有哪几种实现方法

    这次给大家带来热模块替换有哪几种实现方法,热模块替换的注意事项有哪些,下面就是实战案例,一起来看一下。 稍微研究了一下,发现在angular/cli创建的项目中,实现这个不算太难,步骤如下: 1、首先创建一个src/environments…

    编程技术 2025年3月8日
    200
  • vue实现三级联动

    这次给大家带来vue实现三级联动,vue实现三级联动的注意事项有哪些,下面就是实战案例,一起来看一下。 1、实际效果 地址三级联动 mint-ui picker.png 2、首先你需要去下载一个包含中国省份,城市,区县的数据 如下:(这个地…

    2025年3月8日
    200

发表回复

登录后才能评论