JavaScript 实现获取验证码倒计时效果

要求:

点击发送之后,按钮禁用,并出现倒计时。设置为5秒倒计时。
在这里插入图片描述
5秒过后,按钮复原,可以重新点击发送
在这里插入图片描述

实现思路:

  1. 按钮点击之后,禁用disabledtrue
  2. 同时按钮里面的内容会变化,button里面的内容通过innerHTML修改
  3. 里面秒数是有变化的,因此需要用到定时器
  4. 定义一个变量,在定时器里面,不断递减
  5. 如果变量为0说明时间到了,需要停止定时器,重新恢复变量,并且复原按钮初始状态

代码实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    手机号码: <input type="text"> <button>发送</button>
    <script>
        // 按钮点击之后,会禁用 disabled 为true 
        // 同时按钮里面的内容会变化, 注意 button 里面的内容通过 innerHTML修改
        // 里面秒数是有变化的,因此需要用到定时器
        // 定义一个变量,在定时器里面,不断递减
        // 如果变量为0 说明到了时间,我们需要停止定时器,并且复原按钮初始状态
        var btn = document.querySelector('button');
        var time = 5; // 定义剩下的秒数
        btn.addEventListener('click', function() {
     
     
            btn.disabled = true;
            var timer = setInterval(function() {
     
     
                if (time == 0) {
     
     
                    // 清除定时器和复原按钮
                    clearInterval(timer);
                    btn.disabled = false;
                    btn.innerHTML = '发送';
                    time = 5; // 重新赋值时间变量
                } else {
     
     
                    btn.innerHTML = time + '秒后可再次发送';
                    time--;
                }
            }, 1000);
        });
    </script>

</body>

</html>

猜你喜欢

转载自blog.csdn.net/Jack_lzx/article/details/109270555