Javascript 在onClick之前执行href

Javascript 在onClick之前执行href,javascript,jquery,html,hyperlink,Javascript,Jquery,Html,Hyperlink,我有以下链接: <a href="#HDR" onClick="showGallery()">I</a> 因此,它只在URL中有一个标签时才显示库。但当我点击链接时,什么也没发生。当我点击两次时,多媒体资料会淡入淡出 因此,链接首先生成javascript,而我不工作,因为URL中没有hashtag,然后执行href并在URL中插入hashtag。 我该怎么做 我的目标: 当我点击一个链接时,它会打开一个图库。为了知道我必须打开哪个库,我在URL中插入了一个标签。这里我

我有以下链接:

<a href="#HDR" onClick="showGallery()">I</a>
因此,它只在URL中有一个标签时才显示库。但当我点击链接时,什么也没发生。当我点击两次时,多媒体资料会淡入淡出

因此,链接首先生成javascript,而我不工作,因为URL中没有hashtag,然后执行href并在URL中插入hashtag。 我该怎么做

我的目标:

当我点击一个链接时,它会打开一个图库。为了知道我必须打开哪个库,我在URL中插入了一个标签。这里我想显示HDR相册。我还想,如果我的网站用标签打开,它应该显示图库

还有其他更简单更干净的方法吗?
希望您理解我的意思。

您是否尝试了setTimeout调用来延迟onclick事件

像这样:

<a href="#HDR" onClick="setTimeout(function(){showGallery.call(this)},20)">I</a>

对于现代浏览器,您可以将Javascript代码绑定到事件。链接将不包含Javascript:

function showGallery(){
    if(window.location.hash) {
      $('#gallery').fadeIn('fast');
      var hash = window.location.hash.substring(1);
      alert(hash);
    } else {

    }

}
<a href="#HDR">I</a>

您可以大大简化这一点,将href用于纯导航以外的其他用途不是一个好的做法

<a onClick="showGallery('HDR')">I</a>

如果要在不遵循链接的情况下运行showGallery(),正确的代码如下:

<a href="#HDR" onClick="showGallery(); return false;">I</a>

通过保持
href
,用户仍然可以在状态栏中看到目的地,并且导航仍然适用于没有Javascript的客户端(即Google)。通过在事件处理程序中返回false,可以防止浏览器跟随该链接


在showGallery()中,您可以显示库并将“#HDR”添加到location.hash。

您无需验证窗口的哈希,因为第一次单击时,地址栏中没有任何哈希。该功能仅在第二次单击时应用

你能做的是:


我也试过这个。但是画廊只打开了这个链接。我还想在url中显示HDR,并更新站点。e、 用CTRL+RAhh ok,然后你应该使用Sjoerd下面的答案,但是你可能想多读一些关于哈希更改的内容以及支持哪些浏览器的内容。很好!这就是“优雅”的方法:)谢谢你+1并接受;)但是window.onhashchange=locationhashchange;平均值?它添加了一个事件处理程序,以便在窗口上触发
hashchange
事件时调用函数
locationhashchange
。在jQuery中,这将是
$(window.bind('hashchange',locationhashchange)
。该死的丑。。但在我的情况下,这是唯一可能的办法。啊!
function showGallery(name){
    if(name) {
        $('#gallery').fadeIn('fast');
        alert(name);
    } else {

    }
}
<a href="#HDR" onClick="showGallery(); return false;">I</a>
function showGallery(galid){
    var linkhash = $('#' + galid).attr('href').substring(1);

    alert(linkhash);

    $('#gallery' + linkhash).fadeIn('fast');
}