Javascript 如何获取调用方事件和dom元素id 函数Hello(){ var caller=arguments.callee.caller; 警报(呼叫者); }

Javascript 如何获取调用方事件和dom元素id 函数Hello(){ var caller=arguments.callee.caller; 警报(呼叫者); },javascript,Javascript,如何从上面的Hello函数中获取按钮id,而无需在Hello函数中传递任何参数事件对象会自动传递给Hello函数。您需要将其作为参数接收,然后执行一些跨平台工作以获取元素。JS框架将在这里帮助您 <script> function Hello(){ var caller = arguments.callee.caller; alert( caller ); } </script> <input type="button" id="btnHello

如何从上面的Hello函数中获取按钮id,而无需在Hello函数中传递任何参数

事件对象会自动传递给Hello函数。您需要将其作为参数接收,然后执行一些跨平台工作以获取元素。JS框架将在这里帮助您

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

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

+1安德鲁的评论如下。使用addEventListener和attachEvent获得最佳实践。

事件对象只有在像btnid.onclick=function(e){alert(e.target)}这样使用时才被传递;但是如何获取事件对象当我们将事件应用为inline.IIRC时,您可以通过将
onlick
属性设置为“Hello(event)”来获取它。使用不引人注目的JavaScript附加事件,而不是使用内联事件处理程序,然后您可以使用传递给事件回调的事件对象。顺便说一下,arguments.callee.caller是对调用当前函数的函数(如果有)的引用。它不是在所有浏览器中都实现的,ecma脚本开发人员多年来一直反对它。
function Hello(e){
    var caller = e.target || e.srcElement;
    console.log( caller );
}