我需要在函数getClickedElement中获得clicked元素。我怎么能这样做?
<html>
<head>
<script>
function getClickedElement () {
}
</script>
</head>
<body>
<a href="javascript:alert(getClickedElement())" id="test">click me!!!</a>
</body>
</html>
我只能设置href属性。 我无法设置onclick事件,因为这些元素是由第三方lib生成的。
感谢。
答案 0 :(得分:7)
您无法在javascript:
网址中获取点击的元素。该事件已经完成,因此没有event.target
(或window.event.srcElement
用于IE),javascript:
链接不会在设置this
时调用(因此您获得window
})。
当然,如果你知道有问题的链接是id="test"
你可以document.getElementById('test')
,但我怀疑这是你想要做的事情。< / p>
我只能设置href属性。我无法设置onclick事件,因为这些元素是由第三方lib生成的。
修复或删除lib。 javascript:
网址是完全恐怖的,应该永远不会。
您可以在页面的其他位置添加<script>
吗?如果是这样,您可以在元素上注入click
事件处理程序,而无需任何额外的标记。例如:
for (var i= document.links.length; i-->0;)
if (document.links[i] is one of the links you want to target)
document.links[i].onclick= someHandlerFunction;
function someHandlerFunction() {
alert(this);
return false;
}
实际上,从JS(使用on...
或通过addEventListener
分配IE attachEvent
后备)是分配事件处理程序的最佳实践方式。
答案 1 :(得分:5)
以下stackoverflow问题提供了一种检测被点击元素的方法 here
$(document).click(function(event) {
var text = $(event.target).text();
});
答案 2 :(得分:2)
<a href="javascript:alert(getClickedElement('test'))" id="test">click me!!!</a>
<script>
function getClickedElement (id) {
return document.getElementById(id);
}
</script>
或者,如果您无法预测ID,则可以在加载页面后使用Javascript附加事件。看看jQuery。使用类似$('a').click(function() {return this.id; });
答案 3 :(得分:0)
您可以将其作为参数传递,然后您就可以知道您要查找的元素是什么。 例如:
<html>
<head>
<script>
function getClickedElement ($this) {
}
</script>
</head>enter code here
<body>
<a href="javascript:alert(getClickedElement(this))" id="test">click me!!!</a>
</body>
</html>
希望它会对你有所帮助,它帮助了我:)。