Javascript如何停止setTimeOut

时间:2016-01-18 01:14:14

标签: javascript settimeout smooth-scrolling

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();
}

2 个答案:

答案 0 :(得分:1)

目前尚不清楚您要对特定代码做什么,但停止计时器的一般答案是将结果从setTimeout()保存到范围足够大的变量或在对象的属性上,您可以稍后访问它,然后使用它来调用clearTimeout()。这将停止计时器。

在当前代码中,变量clock仅对timer()函数是本地的,因此只要该函数完成,它就会超出范围且无法访问。您可能需要将clock变量移动到更高的范围,以便可以从要停止计时器的任何代码访问它。

或者,如果您询问的问题是如何告诉您的add()功能在达到某个位置时停止发出新的timer()来电,那么您只需添加{{ 1}}语句到if()函数,如果满足某些条件则不再调用add()

例如:

timer()

答案 1 :(得分:0)

一种常见的方法是先提前设置滚动,然后在另一个方向上使用transform / translateY来偏移滚动的效果,然后将转换向下转换为零。

基本上,在这个时代,我们希望浏览器/ CSS进行转换。它的代码更少,使用转换它会更顺畅。

这是一个非常粗略的想法(没有经过测试,你需要玩它):

Throwable