JS点击获取验证码

449 阅读1分钟

body代码

 <button>
    点击获取验证码
</button>

功能:

点击一下按钮, 让按钮变成 X秒后可以重新执行, 并且在 5秒内不能重新执行

点击一下按钮, 按钮变成 5秒后可以重新执行, 在着 5秒内点击这个 按钮, 不能重复触发

0. 获取元素

    var btn = document.querySelector('button')
    
    

0. 准备变量

    var flag = true

1. 给元素添加点击事件

    btn.onclick = function () {
        if (flag === false) return

        console.log('当前点击事件执行')
        var count = 5
        btn.innerText = `${count} 秒后可以重新执行`

        flag = false

        var timeId = setInterval(function () {
            count--
            btn.innerText = `${count} 秒后可以重新执行`

            if (count === 0) {
                btn.innerText = '点击获取验证码'
                clearInterval(timeId)
                flag = true
            }
        }, 1000)
    }

第一次点击按钮时

flag === true, 所以 31 行 if 判断不可能会执行, 函数会正常往下执行

执行到 37 行的时候, 会将 变量 flag 赋值 为 false; 然后再 5 秒钟以后重新赋值为 true

第二次点击按钮时 (与第一次点击完成时间间隔只有 3 秒钟)

flag === false, 所以 31 行 if 判断条件成立, 执行代码 return, 所以函数就此中断

第三次点击按钮时 (与第一次点击完成时间间隔有 30 秒钟)

flag === true, 所以 31 行 if 判断不可能会执行, 函数会正常往下执行

执行到 37 行的时候, 会将 变量 flag 赋值为 false; 然后 5 秒钟以后重新赋值为 true