【发布时间】:2021-11-07 21:34:41
【问题描述】:
我在这里有这段代码,我希望当我单击同一个按钮时背景停止变化(停止的间隔)。但我无法解决它。(else 部分有效,因为在控制台中 isCicked 改变了它的值)。
let btn = document.querySelector('#btn');
let body = document.querySelector('body');
let isClicked = false;
btn.addEventListener('click', function(){
let x;
let y;
if(isClicked == false){
isClicked = true;
x= setInterval(function(){
let r,g,b;
r = Math.round(Math.random() * 255);
g = Math.round(Math.random() * 255);
b = Math.round(Math.random() * 255);
body.style.backgroundColor = `rgb(${r},${g},${b})`;
btn.classList.toggle('button-style')
},1000)
}else{
isClicked = false;
clearInterval(x);
}
console.log(isClicked);
})
<button type="button" id="btn">Click</button>
【问题讨论】:
-
你需要在监听器之外声明
x。您在每次单击时重新声明它并覆盖间隔 id,因此无需清除任何内容。
标签: javascript jquery intervals