2012-01-16 47 views
2

我使用此脚本来检查锚点是否在URL中。如果发现显示滚动函数被调用。 唯一不起作用的是跳到被叫锚。 我是JS新手 - 这个函数有什么问题?Javascript - 跳转到锚定函数

在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; 
} } 

编辑:我不能用 “滚动到视图”。取而代之的

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

回答

3

你可以做

window.location.hash == '#more' 

和,而不是分配给片段,您可以在https://developer.mozilla.org/en/DOM/element.scrollIntoView

描述使用 scrollIntoView方法

摘要

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

语法

element.scrollIntoView(alignWithTop);

alignWithTop可选

如果为true,滚动元件与滚动区域的顶部对齐。如果错误,则与底部对齐。
注意:默认情况下,该元素将滚动以与滚动区域的顶部对齐。

+0

看起来像“window.location.hash =='#more'”是一个错字。两个等于“==”是比较运算符。一个等于“=”是分配,并且是正确的。 – 2015-03-10 23:12:10

+0

@AnthonyScaife,我试图去比较。 '.match'不会分配。 – 2015-03-11 02:39:53