JavaScriptclearInterval 不工作

标签 javascript html

我想让页面在单击链接后向下滚动到确切的元素。但是单击后它会向下滚动到页面末尾,当我尝试向上滚动时,它会尝试向下滚动。

所以,这意味着我的函数中的 clearInterval() 不起作用,我不明白。 “为什么?”

这是函数:

   function smoothScr() {
    	var elem = document.getElementById("main");
    	var elemPos = elem.getBoundingClientRect().top;
    	var i = 0;
    	var changePos = setInterval(changingPos, 10);	

    	function changingPos() {
    		if (elemPos == 0) {					
    		clearInterval(changePos);
    		} else {	
    			i++;
    			window.scrollBy(0, i);
    		};
    	}
    }

最佳答案

而不是

if (elemPos == 0) 

你必须使用

if (elem.getBoundingClientRect().top == 0)

在您的示例中,elemPos 永远不会改变其初始值。

关于JavaScriptclearInterval 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790499/

相关文章:

javascript - 使用 Backbone-Relational 实现多对多关系

javascript - 无法从路由访问组件

javascript - 如何在 Firefox 中使用 jQuery 读取 XML 文件?

javascript - 简单 Accordion 在先前打开的 div 关闭后滚动到顶部

javascript - 在 D3 中对条形图进行排序

javascript - 选择一个类的所有 div 并为其设置动画,但忽略同一类的所有子元素

javascript - .fail 中的 JQuery/$.ajax/alert,但成功了

html - 如何连续点击满足特定条件的链接?

html - 媒体查询放置会影响首次绘制的速度吗?

javascript - 更改命令 text-align :center is relative to in css