使用“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);
支持这种方式的“正确”方式是什么?
答案 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
等,您将覆盖现有的处理程序。