发送短信倒计时功能的实现

515 阅读1分钟

生活中,我们接收短信验证码时的时候,常常会有倒计时。点击发送短信时候,按钮处会出现倒计时,我们可以用以下代码实现。

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>发送短信倒计时</title>
</head>
<style>
    input {
        width: 300px;
        height: 30px;
        border-radius: 5px 0px 0px 5px;
    }

    button,
    input {
        outline: 0;
        border: 0;
    }

    button {
        height: 35px;
        width: 60px;
        border-radius: 0px 5px 5px 0;
    }

    div {
        width: 364px;
        border: 1px solid rgb(221, 165, 165);
        border-radius: 5px;
    }
</style>

<body>
    <!-- 
        思路:
        点完按钮,禁用disabled  为true
        同时按钮里面的内容变化   butt修改on 里的内容通过innerHTML
        里面秒数是有变化的,所以要用到定时器
        定义一个变量,在定时器里,不断递减
        如果变量为0,说明到了时间,我们需要停止定时器  并且复原按钮初始状态
     -->
    请输入手机号码:
    <div>
        <input type="number"><button>发送</button>
    </div>
    <script>
        function message() {
            var btn = document.querySelector('button');
            var timer = 5;  //定义剩下的秒数
            btn.addEventListener('click', function () {
                btn.disabled = true;
                //把 btn.innerHTML=  `还剩下${timer}秒`放入定时器;
                var time = setInterval(function () {
                    if (timer == 0) {
                        //清除定时器  复原按钮
                        clearInterval(time);
                        btn.disabled = false;
                        btn.innerHTML = '发送';
                        timer = 5;
                    } else {
                        btn.innerHTML = `还剩${timer}秒`;
                        timer--;
                    }
                }, 1000)
            })
        }
        message()
    </script>
</body>

</html>