如何获取调用者事件和DOM元素ID

22
<script>
function Hello(){
    var caller =  arguments.callee.caller;
    alert( caller );
}
</script>

<input type="button" id="btnHello" value="Hello" onclick="Hello()" />

如何在不传递任何参数给Hello函数的情况下,从上述Hello函数中获取按钮的ID


2
顺便说一下,arguments.callee.caller是对调用当前函数的任何函数(如果有的话)的引用。它并没有在所有浏览器中实现,并且已经被ECMAScript团队淘汰多年了。 - kennebec
1个回答

37

在Hello函数中,会自动传递一个事件对象。你需要将其作为参数接收并进行一些跨平台的操作来获取元素。一个JS框架会在这里帮助你。

function Hello(e){
    var caller = e.target || e.srcElement;
    console.log( caller );
}

编辑
+1 Andrew在下面的评论中提到,使用addEventListener和attachEvent是最佳实践。


3
只有在像btnid.onclick = function(e){ alert( e.target )};这样使用时,才会传递事件对象。但是当我们将事件应用为内联时,如何获取事件对象? - Jineesh
4
如果我没记错的话,你可以通过将 onclick 属性设置为 "Hello(event)" 来获取它。 - Ben Blank
2
使用不显眼的JavaScript附加事件,而不是使用内联事件处理程序,然后您可以使用传递给事件回调的事件对象。 - Andrew Noyes

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