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>
期待您的回复。
答案 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()”(如果可用)。