切换/暂停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