前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端|利用data对象方法实现倒计时效果

前端|利用data对象方法实现倒计时效果

作者头像
算法与编程之美
发布2020-08-06 21:21:44
8870
发布2020-08-06 21:21:44
举报
文章被收录于专栏:算法与编程之美

倒计时效果的常见应用

倒计时功能是非常有用的一个小功能,在常用的一些app、网站里面也比较常用。比如学习通的作业、考试界面,就会显示倒计时来提醒同学们抓紧时间完成;利用手机号登录时也会有发送验证码的倒计时;此外在一些网站里还会利用倒计时告诉用户多久以后网站将会发布或者关闭进行维护,也可以用于举办活动的开始和停止的倒计时。

实现原理

本次的实现效果如下图2.1:(本次博客还是在上周验证码实现的基础上对倒计时进行讲解的)

从图2.1的效果中可以看出,当我们点击“发送验证码”就会触发倒计时。倒计时这一效果的实现需要用到JavaScript中的Date对象,定义日期对象还是用var myDate = new Date(),利用myDate存放了当前日期对象,然后可以通过日期对象的函数获取具体需要的数据,比如,年月日等等。Data对象方法比较多,如下图:

getYear() 获取年份,获取年最好用;getFullYear()获取完整格式年份,如2014,一般用这个;getMonth()获取月,从0开始(0~11),如果要返回当前月份要加1;getDate()获取日(1~31);getDay()获取星期几(0~6);getHours()获取小时(0~23);getMinutes()获取分钟数(0~59);getSeconds()获取秒数(0~59);getTime()获取毫秒数。

实现过程

创建相应的文件,并在HTML5中引入,利用HTML5代码对页面框架进行搭建(按钮样式可查看之前写的博客);

<header> <i class="am-icon-angle-left back"></i> <p>账号注册</p> </header> <div> <div> <input type="tel" placeholder="手机号" class="input-item mobile"> <i class="res-icon am-icon-phone"></i> </div> <div> <input type="text" placeholder="验证码" class="input-item yanzheng"> <i class="res-icon am-icon-mobile"></i> <button type="button">获取验证码</button> </div> <div> <input type="passWord" placeholder="密码" class="input-item mima"> <i class="res-icon am-icon-check-square-o"></i> </div> <div> <input type="passWord" placeholder="确认密码" class="input-item repeatmima"> <i class="res-icon am-icon-check-circle-o"></i> </div> <div> <button type="button" id="res-btn" class="am-btn am-btn-block">注册</button> </div> </div>

利用css对样式进行调整;

利用JavaScript对功能进行实现。由效果图2.1可以知道,在这里主要用到的是60s倒计时。在注册页面时有获取验证码按钮,点击“获取验证码”后过60秒才能重新获取。点击后样式会发生改变,并且数字是递减的,到0时重新回到最初的状态。

var time=60; //倒计时时长 function roof(o){ if (time ==0) { o.removeAttribute("disabled"); o.innerHTML="输入验证码"; o.style.backgroundColor="#fe9900"; time =60; }else{ o.setAttribute("disabled", true); o.innerHTML=time+"秒后重新获取"; o.style.backgroundColor="#8f8b8b"; time --; setTimeout(function(){ roof (o) },1000) } } //最后点击按钮,调用roof方法: $(".getCode").click(function(){ roof (this); });

如下是整个图2.1验证码获取效果的完整的JavaScript代码,完整的HTML代码如上述(1)所示,css代码已省略。

<script> var times = 60;//倒计时时长 function roof(){ if(times == 0){ $('.yanzhengma').text('发送验证码('+times+'s)'); $('.yanzhengma').prop('disabled',false); $('.yanzhengma').text('发送验证码'); times = 60; return } $('.yanzhengma').text('发送验证码('+times+'s)'); times--; setTimeout(roof,1000); } $('.yanzhengma').on('click',function(){ $(this).prop('disabled',true); roof(); }); $('#res-btn').on('click',function(){ var mobile = $('.mobile').val(); var yanzheng = $('.yanzheng').val(); var mima = $('.mima').val(); var repeatmima = $('.repeatmima').val(); if(!mobile){ $('.mobile').focus(); document.querySelector('.mobile').placeholder = '请填写手机号码'; return } if(!yanzheng){ $('.yanzheng').focus(); document.querySelector('.yanzheng').placeholder = '请填写验证码'; return } if(!mima){ $('.mima').focus(); document.querySelector('.mima').placeholder = '请填写密码'; return } if(!repeatmima){ $('.repeatmima').focus(); document.querySelector('.repeatmima').placeholder = '请填写重复密码'; return } if(repeatmima !== mima){ $('.repeatmima').focus(); document.querySelector('.repeatmima').value = ''; document.querySelector('.repeatmima').placeholder = '两次密码不一致'; return } $(this).prop('disabled',true); alert('注册成功'); }) </script>

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 倒计时效果的常见应用
  • 实现原理
  • 实现过程
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档