定时器这么写有什么问题 为什么不能用num == 0? 用num < 0 就可以
用num == 0 时, 还剩两秒的时候就执行if里的内容了
<button>点击按钮</button>
<script>
// 获取
const btn = document.querySelector('button');
// 点击事件
btn.addEventListener('click', function () {
// 禁用按钮
btn.disabled = true;
// 倒计时
let num = 5;
// 开启定时器
let timer = setInterval(() => {
btn.innerText = `倒计时${num}秒后启用`;
num--;
// 倒计时结束时
if (num == 0) {
// 关闭定时器
clearInterval(timer);
// 恢复文字
btn.innerText = '点击按钮';
// 解除禁用
btn.disabled = false;
}
}, 1000);
});
其实是执行了5秒的只是视觉效果,让你觉得每次到2秒就结束了,你可以这样修改代码
把num 改成6,然后调换
btn.innerText = 倒计时${num}秒后启用
;
num--;
这两行代码的顺序。
```javascript
// 获取
let btn = document.querySelector('button');
// 点击事件
btn.addEventListener('click', function () {
// 禁用按钮
btn.disabled = true;
// 倒计时
let num = 6;
// 开启定时器
let timer = setInterval(() => {
num--;
btn.innerText = `倒计时${num}秒后启用`;
console.log(num)
// 倒计时结束时
if (num == 0) {
// 关闭定时器
clearInterval(timer);
// 恢复文字
btn.innerText = '点击按钮';
// 解除禁用
btn.disabled = false;
}
}, 1000);
});
```
代码没问题,执行了下不存在你说的情况,要不你在debug下试试?