addEventListener如何影响DOM元素的onclick属性?

时间:2011-03-27 13:41:47

标签: javascript javascript-events addeventlistener

element.onclick = function() { alert(1); } 

alert(element.onclick);

上面的代码将输出 function(){alert(1); }

然后我继续执行以下代码:

element.addEventListener('click', function() { alert(2); }, false);
alert(element.onclick);

输出仍为 function(){alert(1); }

事实上,现在点击元素时,代码 addEventListener('click',function(){alert(2);},false); 有效,这意味着新功能 alert(2) 已写入此元素的 onclick 属性。但为什么输出仍然不变?

那么,我想知道的是在执行 addEventListener 时, onclick 属性的变化情况如何?< / p>

期待您的回复。

2 个答案:

答案 0 :(得分:7)

OnClick是DOM Level 0属性。 AddEventListener是DOM Level 2定义的一部分。通过AddEventListener方法添加事件处理程序不会更改元素上的OnClick属性,而是将侦听器添加到元素上的事件侦听器集合。您可以在http://www.w3.org/TR/DOM-Level-2-Events/events.html找到有关DOM Level 2事件的更多信息。在http://en.wikipedia.org/wiki/DOM_events还有一篇很好的文章。

答案 1 :(得分:2)

“onfoo”属性独立于通过“addEventListener()”访问的事件处理程序管理系统。最好使用其中一个,而不是两个,正确的选择是更灵活和不引人注意的“addEventListener()”(如果可用)。