Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
切换/暂停JavaScript滚动功能_Javascript_Jquery_Html_Dom - Fatal编程技术网

切换/暂停JavaScript滚动功能

切换/暂停JavaScript滚动功能,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个功能,可以以设定的速率无限滚动页面,并允许用户自己滚动: function pageScroll() { window.scrollBy(0, 1); scrolldelay = setTimeout(pageScroll, 90); } 我需要的是一种切换此操作的方式。我已经尝试了下面的代码,但它似乎不起作用。可能我不懂scrollBy()的功能非常好(?)但是,有了它,我真的认为我可以调用pageScroll(true)启动滚动,并pageScroll(false)停止滚动

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

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()
会变得非常容易出错。

这只是将我的评论移到更详细的答案中

所以你所做的看起来基本上是正确的。基本上,您需要的是某种变量跟踪页面是否应该滚动,以及在某些事件上切换滚动。下面是一个简单的例子,说明了这一点:

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的按钮,但除此之外,它实际上只是翻转变量,并确保每次单击页面时页面都在滚动。

我看到的一个问题是,在用户控制并想要读取某个内容后,您如何决定何时再次开始自动滚动?至于停止它,您需要使用ClearTimeOut清除计时器。下面是一个简单的JSFIDLE,它展示了一种按照您描述的方式切换页面滚动:@sbrass这就是它-非常感谢-如果您想把这把小提琴作为答案,我很乐意接受它的完美!很高兴我能帮忙:D