JavaScript - 跳转锚点函数

3
我使用这个脚本来检查锚点是否在URL中。如果找到,将调用showscroll函数。 唯一不起作用的是跳转到所调用的锚点。 我对JS不熟悉 - 函数有什么问题吗?
在HTML页面中:
   <script type="text/javascript">
    <!--
    function checkurl(){
    if (window.location.href.match(/\#more/))
    {
    showscroll('more');
    }
    if (window.location.href.match(/\#tab2/))
    {
    showscroll('tab2');
    }

    }
    //-->
    </script>

    </head>                   

    <body onload="checkurl()"> 

.JS

function showscroll(id){
    if (document.getElementById) {
    var divid = document.getElementById(id);
    divid.style.display = divid.style.display='block';
    // NOT WORKING:
 window.location.href = "#"+id;
//
    return false;
} }

修改:我无法使用“滚动到视图”功能。

1个回答

6

与其

window.location.href.match(/\#more/)

您可以只需执行

window.location.hash == '#more'

而不是将内容分配给fragment,您可以使用scrollIntoView方法,如https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView中所述。

摘要

scrollIntoView()方法将元素滚动到视图中。

语法

element.scrollIntoView(alignWithTop);

alignWithTop 可选

如果为true,则滚动的元素与滚动区域的顶部对齐。如果为false,则与底部对齐。
注意:默认情况下,元素会被滚动以与滚动区域的顶部对齐。


看起来 "window.location.hash == '#more'" 是一个打字错误。两个等号 "==" 是比较运算符。一个等号 "=" 是赋值,是正确的。 - Anthony Scaife
@AnthonyScaife,我正在尝试比较。.match不进行赋值。 - Mike Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接