2013-01-03 38 views
10

Possible Duplicate:
addeventhandler vs onclick的onclick VS的addEventListener

我用 “的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

不要忘记给予好评和标记答案,接受它是否适合你... –

回答

4

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

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

+0

但我可以做哪些调用其它函数的函数...规避“onclick”的问题。 –

+0

@bluesm当然可以。 – alex

+0

@alex在jquery addEventListener()给出错误,Uncaught TypeError:Object [object Object]没有方法'addEventListener'??该怎么办? – anam

11

如果你已经知道的功能和元素的HTML即不获得动态添加比它好,你添加内联函数,而不是使用像“的addEventListener”额外的方法调用部分

另一个要注意

虽然的onclick在所有浏览器工作,的addEventListener不会在旧版本的IE浏览器,它使用的attachEvent,而不是工作。

OnClickDOM级别0属性。 的addEventListenerDOM级别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); 

这个的Advatange:您可以添加多个事件处理程序。也separte HTML和JavaScript代码

更多的细节,你可以这样说的:Adding an Event Handler

+0

暗示_inline_事件处理程序:-1 – Cerbrus

+0

@Cerbrus - 只是建议,因为这的onclick的作品在所有的浏览器 –

+0

Downvote的现在锁定: - /我想,如果我可以删除它,因为你多一些的信息进行编辑。 – Cerbrus