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

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

倒计时效果的常见应用

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

实现原理

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

图2.1 实现效果

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

图2.2 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>

 



目录
相关文章
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
762 1
|
JSON 前端开发 JavaScript
前端工具方法整理
前端工具方法整理
296 8
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
1159 5
|
存储 前端开发 JavaScript
前端中对象的深度应用与最佳实践
前端对象应用涉及在网页开发中使用JavaScript等技术创建和操作对象,以实现动态交互效果。通过定义属性和方法,对象可以封装数据和功能,提升代码的组织性和复用性,是现代Web开发的核心技术之一。
|
监控 前端开发 jenkins
Jenkins 在前端项目持续部署中的应用,包括其原理、流程以及具体的实现方法
本文深入探讨了Jenkins在前端项目持续部署中的应用,涵盖其基本原理、流程及具体实现方法。首先介绍了Jenkins的基本概念及其在自动化任务中的作用,随后详细解析了从前端代码提交到生产环境部署的全过程,包括构建、测试、部署等关键步骤。最后,强调了持续部署中的代码质量控制、环境一致性、监控预警及安全管理等注意事项,旨在帮助开发者高效、安全地实施持续部署。
493 5
|
存储 前端开发 JavaScript
前端的全栈之路Meteor篇(四):RPC方法注册及调用-更轻量的服务接口提供方式
RPC机制通过前后端的`callAsync`方法实现了高效的数据交互。后端通过`Meteor.methods()`注册方法,支持异步操作;前端使用`callAsync`调用后端方法,代码更简洁、易读。本文详细介绍了Methods注册机制、异步支持及最佳实践。
504 3
|
JSON 前端开发 数据格式
前端的全栈之路Meteor篇(五):自定义对象序列化的EJSON介绍 - 跨设备的对象传输
EJSON是Meteor框架中扩展了标准JSON的库,支持更多数据类型如`Date`、`Binary`等。它提供了序列化和反序列化功能,使客户端和服务器之间的复杂数据传输更加便捷高效。EJSON还支持自定义对象的定义和传输,通过`EJSON.addType`注册自定义类型,确保数据在两端无缝传递。
391 1
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
1026 0
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1656 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
1071 0

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1263
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    575
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    437
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    437
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    551
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    728
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1416
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    315
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1168
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    510