前端|利用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>

 



目录
相关文章
|
6天前
|
存储 前端开发 JavaScript
前端的全栈之路Meteor篇(四):RPC方法注册及调用-更轻量的服务接口提供方式
RPC机制通过前后端的`callAsync`方法实现了高效的数据交互。后端通过`Meteor.methods()`注册方法,支持异步操作;前端使用`callAsync`调用后端方法,代码更简洁、易读。本文详细介绍了Methods注册机制、异步支持及最佳实践。
|
6天前
|
JSON 前端开发 数据格式
前端的全栈之路Meteor篇(五):自定义对象序列化的EJSON介绍 - 跨设备的对象传输
EJSON是Meteor框架中扩展了标准JSON的库,支持更多数据类型如`Date`、`Binary`等。它提供了序列化和反序列化功能,使客户端和服务器之间的复杂数据传输更加便捷高效。EJSON还支持自定义对象的定义和传输,通过`EJSON.addType`注册自定义类型,确保数据在两端无缝传递。
|
25天前
|
前端开发 JavaScript
掌握微前端架构:构建现代Web应用的新方法
本文介绍了微前端架构的概念及其在现代Web应用开发中的优势与实施方法。微前端架构通过将应用拆分成独立模块,提升了开发效率和灵活性。其核心优势包括技术栈灵活性、独立部署、团队协作及易于维护。文章详细阐述了定义边界、选择框架、管理状态和通信等关键步骤,并讨论了状态同步、样式隔离及安全性等挑战。微前端架构有望成为未来Web开发的重要趋势。
|
27天前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
33 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
13天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
85 0
|
13天前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
63 0
|
17天前
|
前端开发
前端常用方法防抖(debounce)和节流(throttle)的示例演示及应用场景说明
前端常用方法防抖(debounce)和节流(throttle)的示例演示及应用场景说明
20 0
|
2月前
|
前端开发 JavaScript
前端基础(十六)_数组对象
本文详细介绍了JavaScript中数组对象的创建和操作方法,包括数组的增删改查、排序、去重、迭代等常用操作。
17 0
|
14天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
|
14天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
30 0