项目中经常会遇到这样的场景:一个发送验证码的按钮,点击一次之后,我们会禁用此按钮(disabled),并展示60s后才允许重新发送。这需要用到js里setInterval来实现。
具体代码如下:
<el-button type="primary" class="sendCodeBtn" @click="sendCode" :disabled="isLock">发送验证码</el-button>
sendCode(){
console.log(1111);
this.isLock = true
let sendCode = document.querySelector('.sendCodeBtn')
let num = 10
let timer = setInterval(()=>{
num--
sendCode.innerText = `${num}s后重新发送`
if(num < 0){
clearInterval(timer)
sendCode.innerText = '发送验证码'
this.isLock = false
}
},1000)
}
查缺补漏:setTimeout和setInterval的区别
setTimeout:指定的时间后调用函数,只执行一次
setInterval:每隔一段时间就调用一次函数,可执行多次,直到使用clearInterval把定时器清除。