我有一个js函数可以滚动到div。 这是函数,它工作正常,但我稍后会解释这有什么问题。
scrollAnchor= function(){
var element = document.getElementById('generalAnchor');
var position = element.getBoundingClientRect();
var x = position.left;
var y = position.top;
window.scrollTo(x,y);
}
然后是一个html(没关系,我们只需要div generalAnchor)
<button onclick="scrollAnchor()">Click me</button>
<div id="generalAnchor">Test</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
这是非常长的页面的示例,因此滚动工作正常。 但事情就是这样,如果我删除所有那些br,那么滚动不起作用,因为页面不够长。
我可以像myPage#generalAnchor一样使用真正的网址,但实际上我不能这样做,因为我无法加载新页面或者我没有其他信息。
你有什么想法可以解决这个问题吗?
PS:我把样本放在这里:https://www.w3schools.com/code/tryit.asp?filename=FHHEHPNB4O1V
有两种情况,第一个按钮工作正常。但第二个不起作用。
感谢您的帮助!
答案 0 :(得分:0)
您是否已考虑过使用html锚点的默认功能?
因此,如果用
替换第二个按钮<a href="#generalAnchor">Click me</a>
您的代码应该有效。
如果需要,您可以更改设计,或使用链接包裹您的按钮。