2 回答
TA贡献1911条经验 获得超7个赞
要清除间隔,您必须保存的返回值 setInterval
const playAnimation = () => {
const pixels = window.pageYOffset
console.log("pixels:", pixels)
let interval // declare the variable
if (pixels >= 30) {
interval = setInterval(startCycle, 1000) // save the interval ID
} else {
clearInterval(interval) // clear the interval ID
}
}
TA贡献1816条经验 获得超6个赞
您遇到的问题是您要不止一次设置间隔。每次scroll触发事件时,都会启动一个间隔。
因此,添加一个布尔值以确保一次setInterval()只调用一个布尔值应该可以解决您的问题。
编辑:同样,正如Alex Wayne提到的那样,您应该将间隔保存在变量中,以便以后清除它。
例如:
var interval;
var isIntervalSet = false;
const playAnimation = () => {
const pixels = window.pageYOffset
console.log("pixels:", pixels)
if (pixels >= 30 && !isIntervalSet) {
interval = setInterval(startCycle, 1000)
isIntervalSet = true;
} else {
clearInterval(interval);
isIntervalSet = false;
}
}
document.addEventListener("scroll", playAnimation)
添加回答
举报