Onclick vs addEventListener

时间:2013-01-03 08:09:58

标签: javascript events addeventlistener

  

可能重复:
  addeventhandler vs onclick

使用“onclick”“onmousedown”作为HTML元素的属性,我有点困惑。

如:

<button onclick="my_JS_function()"></button>

<div onmousedown="my_another_JS_funciton"></div>

但有些人说只有“正确”的方式才能添加“听众”

document.getElementById("my_id").addEventListener("onclick", my_JS_function, false);

支持这种方式的“正确”方式是什么?

2 个答案:

答案 0 :(得分:11)

如果你已经知道函数和元素是html的一部分,即没有动态添加,那么你添加函数内联而不是使用额外的方法调用,如“addEventListener”

需要注意的另一件事

虽然 onclick适用于所有浏览器,但addEventListener在旧版本的Internet Explorer中不起作用,而Internet Explorer则使用了attachEvent。

OnClick DOM Level 0 属性。 AddEventListener DOM Level 2 定义的一部分。请阅读:http://www.w3.org/TR/DOM-Level-2-Events/events.html

内联事件处理程序作为HTML标记属性添加,例如:

 <a href="gothere.htm" onlick="alert('Bye!')">Click me!</a> 

上述技术很简单,但有一些缺点:它们允许每个元素只有一个事件处理程序。此外,使用内联事件处理程序,您可以很好地将JavaScript代码与HTML标记分离。

document.getElementById("my_id").addEventListener("onclick", my_JS_function, false);

推广此:您可以添加多个事件处理程序。还有separte html和javascript代码

有关详情,请参阅:Adding an Event Handler

答案 1 :(得分:4)

后者(addEventListener())是最好的方法,因为您可以将同一类型的多个事件附加到同一个元素。

通过分配给onclick等,您将覆盖现有的处理程序。