切换/暂停Javscript滚动功能

时间:2018-08-09 17:22:02

标签: javascript jquery html dom

我有一个功能,可以按设置的速率无限向下滚动页面,并允许用户自己滚动:

function pageScroll() {
  window.scrollBy(0, 1);
  scrolldelay = setTimeout(pageScroll, 90);
}

我需要的是一种开启和关闭此动作的方式。我已经尝试了以下代码,但似乎无法正常工作。也许我不太了解scrollBy();函数(?),但是我真的以为我可以调用pageScroll(true)来开始滚动,而pageScroll(false)可以停止滚动它。也许有人可以告诉我我要去哪里错了?

function pageScroll(x) {
  if(x == true) {
    window.scrollBy(0, 1);
    scrolldelay = setTimeout(pageScroll, 90);
  } else if(x == false) {
    window.scrollBy(0, 0);
  }
}

可以这么说,也许有一种使用jQuery scrollTop()的方法,但是我也想允许用户自己滚动,如果尝试使用scrollTop()会出现小故障向上滚动后退页面。

1 个答案:

答案 0 :(得分:1)

这只是将我的评论移至更详细的答案。

所以您正在做的事情看起来基本上是正确的。基本上,您想要的是某种变量跟踪,该变量跟踪页面是否应该滚动,以及在某些事件上切换滚动。这是一个简单的示例,看起来像这样:

var shouldScroll = true;

function scroll() {
  if (!shouldScroll) {
    return;
  }
  window.scrollBy(0, 1);
  setTimeout(scroll, 90);
}

scroll();

document.getElementById('buttonId').addEventListener('click', function() {
  shouldScroll = !shouldScroll;
  scroll();
});

假定您有一个ID为buttonId的按钮,但除此之外,它实际上只是翻转变量并确保每次单击时页面都在滚动。