强制JS函数范围之外的布尔值

时间:2017-06-01 17:04:25

标签: javascript

我想在我的滚动事件监听器中只运行一次if语句。现在我认为它不起作用,因为每当有一个滚动动作将scroll25重置为false时,该函数就会运行,因此每次都使if语句成立。是否有可能在此函数的作用域之外强制使用scroll25的布尔值,以便滚动侦听器可以继续运行并且只使if语句有效一次?

$m

Codepen:https://codepen.io/anon/pen/ZyzBVY

1 个答案:

答案 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;
  }
 }
相关问题