JavaScript点击获取锚点href

4

如何使用JavaScript在单击锚时获取其href? 我已经执行了以下操作:

function myFunc() {
}
window.onclick = myFunc;

但如何扩展函数,使其仅响应锚点的点击事件并获取href?


锚点的href?锚点不是像页面上的针一样有自己的名称吗?它没有href。如果您想获取任何链接的href,则建议使用jQuery。 - nebkat
4个回答

13
最初的回答:
当点击页面上任意一个链接时,会弹出链接的地址。为实现此功能,需要在页面加载完成后,获取所有a标签并监听其点击事件,当链接被点击时,调用linkClick()函数,把事件对象作为参数传进去,通过事件对象获取链接地址并弹出。

2
请注意,如果您的锚点内有另一个元素(例如{{link1:<div class ="button"> <p>这是一个链接</ p> </ div>}}),则e.target可能是(在上面的示例中)<div>或<p>,并且不会在其上定义href属性。 在这些情况下,您需要遍历DOM直到找到<a>元素。 - Peter Berg

2

你的 document.onclick 在整个文档上注册处理程序。但你应该将其添加到每个链接中。你可以使用JavaScript和类似于Prototype或jQuery的框架来完成这个任务,使其更加容易:

$$('a').invoke('observe', 'click', function(a){
    myFunc(a);
});

但您也可以使用纯JS结合循环(请参见Delan的新答案)来使用getElementsByTagName函数。


当你在没有任何评论的情况下被投下负票时,真是令人失望。 - 2ndkauboy
你的答案很好,但是我需要不使用jQuery的解决方案,因为对于我的问题来说,jQuery有点过载。谢谢! :) - Infinite Possibilities
这是一个原型而不是 jQuery 解决方案,我还指出了如何在没有框架的情况下完成它。而你也没告诉我们你不想使用框架或者根本没有使用框架。 - 2ndkauboy

1

这样做是行不通的,你需要为每个锚点设置一个onclick处理程序。最简单的方法是使用像jQueryPrototype这样的JavaScript框架。

将你的函数扩展到接收调用对象:

var myFunc = function(target) {
  var href = target.href;
  // ... your function code that can now see the href of the calling anchor
}

jQuery:

$('a').click(function(){
  myFunc(this);
});

原型:请查看Kau-Boy答案


你的原型不正确。我之前已经上传了完全相同的东西。请查看我的答案,看看如何在原型中实现。 - 2ndkauboy

-1
function myFunc(link) {
  alert(link.href);
  return false; // return false if you don't want to actually navigate to that link
}


<a href onclick="return myFunc(link)">something</a>

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