0

嗨,我有一个使用锚点导航的页面。在加载索引页面 (A) 时需要跳转到锚点。很好,我可以使用加载功能执行此操作,但从 BI 页面返回到页面 A 想要跳转到不同的锚点。我有这个工作:

    <!-- go to Anchor -->
    <script type="text/javascript">

    function goToAnchor() {
    var urllocation = location.href;
    if(urllocation.indexOf("#top") > -1){
        window.location.hash="top";
    } else {
    window.location.hash="middle";
    }
}
    </script>

#middle是来自不包含锚点的链接(或在 url 栏中输入地址)时使用的锚点。我想再添加三个“如果”。我对 js 还很陌生,所以如果我在做一些愚蠢的事情,请多多包涵。我试过这个:

function goToAnchor() {
    var urllocation = location.href;        
if(urllocation.indexOf("#right") > -1){
        window.location.hash="right"; 
    } else {
    window.location.hash="middle";
    }
    if(urllocation.indexOf("#bottom") > -1){
        window.location.hash="bottom"; 
    } else {
    window.location.hash="middle";
    }
    if(urllocation.indexOf("#left") > -1){
        window.location.hash="left"; 
    } else {
    window.location.hash="middle";
    }

但不是快乐,js 中断并且在页面加载时不再进入#middle。

我尝试了一种通配符方法:

function goToAnchor() {
var urllocation = location.href;
if(urllocation.indexOf("#.") > -1){
    window.location.hash=".";
} else {
window.location.hash="middle";
}

}

再一次,没有喜悦。

请提供任何帮助..谢谢

4

2 回答 2

1

我不太确定我理解你想要达到的效果(因为window.location.hash应该已经包含你的 url 的哈希部分),但你的代码可能应该是

function goToAnchor() {
    var urllocation = location.href;        
    if (urllocation.indexOf("#right") > -1) {
        window.location.hash = "right"; 
    } else if (urllocation.indexOf("#bottom") > -1) {
        window.location.hash = "bottom";
    } else if(urllocation.indexOf("#left") > -1) {
        window.location.hash = "left";
    } else {
        window.location.hash = "middle";
    }
}

我还猜测您的“通配符”方法是为了使用正则表达式:

function goToAnchor() {
    var urllocation = location.href;
    var hashMatch = urllocation.match(/#(.*)/)
    if (hashMatch){
        window.location.hash = hashMatch[1];
    } else {
        window.location.hash = "middle";
    }
}

同样,我不太清楚这段代码应该有什么效果,因为window.location.hash在赋值之前和之后可能会有相同的值。

于 2012-04-10T14:49:54.040 回答
1

如果您只想返回 URL 中的哈希,您是否尝试过类似的方法?

var hash = window.location.hash || "middle"; //Get current hash or default to "middle" if no hash is currently set
window.location.hash = +new Date() + ""; //Remove the hash and set it to some random value
window.location.hash = hash; //Set to the old hash
于 2012-04-10T14:30:17.513 回答