Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取回事件处理程序返回未定义的_Javascript_Javascript Events - Fatal编程技术网

Javascript 取回事件处理程序返回未定义的

Javascript 取回事件处理程序返回未定义的,javascript,javascript-events,Javascript,Javascript Events,以下代码不起作用: function dnd(){ } var ele = document.getElementById("relative"); ele.addEventListener("click",dnd,false); document.write(ele.onclick); 输出为未定义的。我猜输出应该是函数onclick(event){dnd();} 我该怎么解决这个问题 非常感谢您的建议。如果事件处理程序是通过标记内联注册的(例如,),onclick属性只会向您显示事件处理程

以下代码不起作用:

function dnd(){
}
var ele = document.getElementById("relative");
ele.addEventListener("click",dnd,false);
document.write(ele.onclick);
输出为未定义的
。我猜输出应该是
函数onclick(event){dnd();}

我该怎么解决这个问题

非常感谢您的建议。

如果事件处理程序是通过标记内联注册的(例如,
),onclick属性只会向您显示事件处理程序


为什么需要读取事件处理程序?这是一件比较奇怪的事情…

建立事件处理程序有不同的方法,它们在DOM中使用不同的机制。特别是,正如您根据经验发现的那样,通过“addEventListener”添加事件侦听器不会影响元素的“onclick”属性。这些机制只是分开的。

将事件附加到DOM节点有3种常见方法

该方法是按照W3CDOM中的指定注册事件侦听器的方法。它有很多好处,但在Internet Explorer中不起作用。对于Internet Explorer,您必须使用提供类似功能的
attachEvent()
方法

另一方面,
onclick
属性是一种更古老但更受支持的附加事件处理程序的方法。但是,它也有一些缺点,例如每个事件只允许一个事件处理程序

至于如何获取附加到特定节点的事件处理程序,这取决于附加事件的方法。示例中的问题是,您正在使用
addEventListener()
方法附加事件,然后尝试使用
onclick
属性读取事件

您可能希望查看以下堆栈溢出帖子,以便进一步阅读本主题,尤其是:


这是W3C事件注册模型的当前限制之一。如果使用JS方法注册,那么就没有标准的方法来获取处理程序

最新的W3C添加了eventListenerList规范。我想我们缺乏对跨浏览器的API的密切支持

当然,如果您使用传统方式添加您的方法



      

那么你的例子就行了

一些堆栈溢出链接


好的,还可以从Javascript显式设置“onclick”属性。这里的大图是什么?你想达到什么目标?