JavaScript:获取点击元素

Dum*_*tru 5 javascript

我需要在函数getClickedElement中获得clicked元素.我怎样才能做到这一点?

<html>
<head>
  <script>
    function getClickedElement () {
    }
  </script>
</head>
<body>
  <a href="javascript:alert(getClickedElement())" id="test">click me!!!</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我只能设置href属性.我无法设置onclick事件,因为这些元素是由第三方lib生成的.

谢谢.

bob*_*nce 7

您无法在javascript:URL中获取单击的元素.事件已经完成,所以没有event.target(或window.event.srcElementIE),并且javascript:没有使用thisset 调用链接(所以你得到window).

当然,如果你知道有问题的链接是id="test"你可以做的document.getElementById('test'),但我怀疑这是你想要做的事情.

我只能设置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;
}
Run Code Online (Sandbox Code Playgroud)

事实上,分配从JS(用on...或通过addEventListenerattachEvent回退用于IE)是反正加入事件处理程序的最佳实践方法.

  • 尽管这个答案很有帮助,但我不确定回答者所说的“document.links[i] 是您想要定位的链接之一”是什么意思。有人会如何在实际代码中写出这种比较?为什么这个答案的作者不直接写出实际代码而不是随意跳入外行的术语? (2认同)

小智 5

以下statckoverflow问题提供了一种在此处检测单击元素的方法

$(document).click(function(event) {
    var text = $(event.target).text();
});
Run Code Online (Sandbox Code Playgroud)

  • 这实际上正是我想要的! (4认同)