2014-07-14 29 views
0

我有一个令人沮丧的简单问题,我无法解决。我可以链接到15个不同的stackoverflow问题,回答相同的事情。我已经回顾了答案,但我仍然无法弄清楚为什么这在我的情况下不起作用。请参见下面的代码缩短:停止从上升到顶部锚点

的Javascript:

function menu(link) { 

if (link == "link1") { 
location.href = "http://example.com/index.php?menu=referrals"; 
} 
else if (link == "link2") { 
location.href = "http://example.com/index.php?menu=internet"; 
} 
else if (link == "link3") { 
location.href = "http://example.com/index.php?menu=phone"; 
} 

} 

的index.php:

<a href="#void" id="link1" onclick="menu(this.id);"> 
<div class="<?php echo $menubox1; ?>" id="<?php echo $box1; ?>"> 
<div class="title">Referrals</div> 
</div> 
</a> 
<a href="#void" id="link2" onclick="menu(this.id);"> 
<div class="<?php echo $menubox2; ?>" id="<?php echo $box2; ?>"> 
<div class="title">Internet</div> 
</div> 
</a> 
<a href="#void" id="link3" onclick="menu(this.id);"> 
<div class="<?php echo $menubox3; ?>" id="<?php echo $box3; ?>"> 
<div class="title">Phone</div> 
</div> 
</a> 

<div class="frame2"> 
Link Content, height is a tall fixed height. 
</div> 

放在location.href代码工作得很好。但是,页面跳转到顶部,似乎忽略了返回错误。我在这里回顾的所有答案都让我认为我的代码应该可以正常工作。我在这里错过了什么?非常感激。

编辑:我已经更新了基于迄今为止给出的答案的代码。

回答

1

href="#"更改为href="#void"并防止跳跃或更好,如果不需要它,则不要使用a元素,如果它不在任何位置。使用href="javascript:void(0);"也是一个不好的解决方案,因为该脚本没有做任何事情。使用span,label ...并如下所述,删除return false


我分析了网站,没有什么意外的。让我更详细地解释一下......

当你点击这个链接<a href="#void" id="link1" onclick="menu(this.id);">#void部分是真正防止跳跃,但在同一时间,你要离开当前页面调用此行location.href = "?menu=referrals"位于menu()函数内的。

?menu=referrals"?menu=internet"是完全不同的页面/链接,这就是为什么在浏览器顶部加载新页/链接

可以肯定在这个后“跳”,修改剧本了一下,如下

function menu(link) { 
    return false; 
    if (link == "link1") { 
    // ... 
} 

然后,向下滚动页面大约50px并点击菜单链接。正如你所看到的,页面不会跳跃,而且你不会离开当前页面/链接。换句话说,你只是面对普通的浏览器行为。

最后,在这一点上,我没有看到没有使用正确的链接的任何理由;因此,这个<a href="#void" id="link1" onclick="menu(this.id);">Referrals</a>可以这样写:<a href="/referrals">Referrals</a>,你的菜单可以仅使用CSS进行管理。

+0

所以我试了这些。 javascript:void(0)和#void。既然你说过后一种情况是可取的,那么当我这样做的时候,网址最后会在#void处简单追加,然后加载新页面并再次跳转到页面的顶部。我已经修复了框架的高度(一个div,其中包含所有随链接而变化的内容,并且它位于菜单代码下面)div,以便它不会改变以确保它不是它(它会改变身高基于我原来的代码中的链接)。仍然试图通过解决方案来解决这个问题,并且很困惑,为什么它在我的情况下不起作用。 –

+0

@ user1935137因为使用'href =“#void”'或'href =“javascript:void(0);''应该阻止跳转,所以请你分享链接这是我使用了十年的东西:)所以我相信还有其他的东西导致这个问题。你也可以使用'href =“#self”',在HTML页面中任何不被用作片段的东西。 – hex494D49

+0

链接是否有效? –

0

永远不会到达return false,因为您正在加载新的URL。

0

href="javascript:void(0);"替换您的href="#"以确保页面不会回到顶部。