Hellow 我遇到了一个小问题,我不知道如何在我的网络上达到某个Y位置时停止我的添加功能,有些身体可以帮助我使用它!
var scroll = function(){
var positionYTop = 0,
speed = 50,
links = document.getElementsByTagName('a');
function timer() {
var clock = setTimeout(add, 200)
}
function add() {
window.scrollTo(0, positionYTop += speed);
timer();
}
add();
}
答案 0 :(得分:1)
目前尚不清楚您要对特定代码做什么,但停止计时器的一般答案是将结果从setTimeout()
保存到范围足够大的变量或在对象的属性上,您可以稍后访问它,然后使用它来调用clearTimeout()
。这将停止计时器。
在当前代码中,变量clock
仅对timer()
函数是本地的,因此只要该函数完成,它就会超出范围且无法访问。您可能需要将clock
变量移动到更高的范围,以便可以从要停止计时器的任何代码访问它。
或者,如果您询问的问题是如何告诉您的add()
功能在达到某个位置时停止发出新的timer()
来电,那么您只需添加{{ 1}}语句到if()
函数,如果满足某些条件则不再调用add()
。
例如:
timer()
答案 1 :(得分:0)
一种常见的方法是先提前设置滚动,然后在另一个方向上使用transform / translateY来偏移滚动的效果,然后将转换向下转换为零。
基本上,在这个时代,我们希望浏览器/ CSS进行转换。它的代码更少,使用转换它会更顺畅。
这是一个非常粗略的想法(没有经过测试,你需要玩它):
Throwable