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”属性。这里的大图是什么?你想达到什么目标?