验证码点击获取按钮 开关变量

224 阅读2分钟

验证码点击获取按钮

按钮在点击前是 “点击获取验证码” 状态  点击后 经过5s可以再次点击获取 

1.获取 文本所在标签
2.给元素添加点击事件
3.通过点击事件实现从5s0s后重新点击的效果  
(4s后重新获取  3s后重新获取  2s后重新获取  1s后重新获取 点击获取验证码)
// html  点击按钮
 <button>点击获取验证码</button>    
        var but = document.querySelector('button'); // 获取button标签

        but.onclick = function(){  // 给button标签添加点击事件
            var content = 5; // 定义时间初始值  => 事件从5s开始倒计时

            but.innerText = `${content} s后重新获取`; // 向页面渲染文本点击后的初始样式  =>  点击后 5s后重新获取
            // 定义计时器
            var time = setInterval(function(){  
                content--; // 让时间变量自减
                // 当时间为0时 倒计时器结束
                but.innerText = `${content} s后重新获取`;  // 向页面渲染自减后的文本  => 4s后重新获取  3s后重新获取  2s后重新获取  1s后重新获取 0s后重新获取
                // 判读 当时间自减为0 时  清除计时器  回到点击前
                if(content == 0){
                    but.innerText = `点击获取验证码`;  // 时间为0时 文本回到点击前
                    clearInterval(time);  // 清除及时器
                }

            },1000);  // 1s 执行一次
            // 弊端: 在点击后 再次点击会回到点击前  出现秒数跳转 多次执行
        }

验证码点击获取按钮优化

        var but = document.querySelector('button'); // 获取button标签

        var flag = true; // 定义开关变量
        but.onclick = function(){  // 给button标签添加点击事件
            if(!flag) return; //点击后不能再次点击 
            var content = 5; // 定义时间初始值  => 事件从5s开始倒计时

            but.innerText = `${content} s后重新获取`; // 向页面渲染文本点击后的初始样式  =>  点击后 5s后重新获取
            flag = false;  // 5秒结束后不能再次点击
            // 定义计时器
            var time = setInterval(function(){  
                content--; // 让时间变量自减  当时间为0时 倒计时器结束
                but.innerText = `${content} s后重新获取`;  // 向页面渲染自减后的文本  
                // => 4s后重新获取  3s后重新获取  2s后重新获取  1s后重新获取 0s后重新获取
                // 判读 当时间自减为0 时  清除计时器  回到点击前
                if(content == 0){
                    flag = true; // 当时间为0 时可以再次点击重新获取验证码
                    but.innerText = `点击获取验证码`;  // 时间为0时 文本回到点击前
                    clearInterval(time);  // 清除及时器
                }

            },1000);  // 1s 执行一次
        }

开关变量

开关变量:它就如同自己定义的普通变量一样,不过它的功能是用于判断后续代码是否可以重
新执, 它就如同一个开关,在合适的地方让代码块执行或停止执行,在上述案例中,点击过后
就不能再次点击 直到时间为0时才能再次点击就是用了此原理,在使用时把它看作一个开关即可,它的值为取反就关闭(即不执行),相同就打开(即执行)