我想在我的滚动事件监听器中只运行一次if语句。现在我认为它不起作用,因为每当有一个滚动动作将scroll25重置为false时,该函数就会运行,因此每次都使if语句成立。是否有可能在此函数的作用域之外强制使用scroll25的布尔值,以便滚动侦听器可以继续运行并且只使if语句有效一次?
$m
答案 0 :(得分:1)
我只是在函数
之外声明它类似
document.addEventListener("scroll", scrollTracking);
var scroll25 = false;
function scrollTracking() {
// Get client heights, 100%, 25% and 50%
var clientHeight = document.body.clientHeight;
var perc25 = clientHeight * .25;
var perc50 = clientHeight * .50;
console.log('25%: ' + perc25 + ', 50%: ' + perc50);
// Log scroll position from top of document.
var scrollTop = document.body.scrollTop;
console.log(scrollTop);
// If scroll is within the clientHeight range of 25% - 50%, log
// message once.
if (scrollTop >= perc25 && scrollTop < perc50 && !scroll25) {
console.log("25% Reached. Success.");
scroll25 = true;
}
}