我的页面上有5个锚标记。现在,当点击其中一个标签时,我想调用一个JavaScript函数,在这个函数中我需要找出哪个锚被点击了。
如何处理?
我想用纯JavaScript或dojo来做。
答案 0 :(得分:3)
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++) {
anchors[i].onclick = function() {
alert(this.id);
doStuff(id);
return false;
}
}
演示:http://jsfiddle.net/FVWqT/1/
注意,如果您有五个以上的锚点,并且只想定位特定的锚点,您可能希望按类过滤,例如:
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++) {
if(anchors[i].className == "something") {
anchors[i].onclick = function() {
alert(this.id);
doStuff(id);
return false;
}
}
}
答案 1 :(得分:1)
不是为页面中的每个链接定义onclick处理程序,为了获得更好的性能,您可以在链接容器上使用事件委托(这种技术非常适合您的任务),例如。
(function() {
var divcnt = document.getElementById('linkcnt');
divcnt.onclick = function(evt) {
var event = (evt || window.event),
target = (event.target || event.srcElement);
if (evt.target.tagName === 'A') {
// event.target is DOM reference to link you clicked
// evt.target.id is the ID;
alert(evt.target.id);
//callmyfunction(event.target) // Call a function with DOM reference
}
}
})();
请参阅此处的工作示例:http://jsfiddle.net/fcalderan/MSvvh/
答案 2 :(得分:1)
不需要复杂的构造,在地址栏中尝试自己:
javascript:(
function () {
for (var i=0; i<document.links.length; i++)
document.links[i].onclick = function () {
return confirm(this.href+'\nORLY?')
};
}
)();