我想让页面在单击链接后向下滚动到确切的元素。但是单击后它会向下滚动到页面末尾,当我尝试向上滚动时,它会尝试向下滚动。
所以,这意味着我的函数中的 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/