【发布时间】:2016-08-11 23:22:44
【问题描述】:
当我开始学习 javascript 时,我认为浏览器会简单地在元素的 onclick 属性中运行 javascript,就好像它在脚本标签内一样。但是我意识到情况并非如此,因为您可以在这些属性中使用某些参数。例如onclick="foo(this, event)" 将触发的事件和触发事件的元素传递给函数 foo。
我想知道在这些标签中还可以使用哪些其他参数? w3schools 上的文档没有提到任何关于此的内容。我也想知道这些属性是如何实现的;该函数是如何调用的以及在什么范围内调用(我知道 foo 会像 element.foo() 一样被调用,但对于其他 javascript 表达式来说并非如此)。任何地方都有全面的文档吗?目前我最好的猜测是实现看起来像这样:
element.onclickfunction = function(){
var event = new Event(...)
eval(element.onclick)
}
编辑: 没有一个回答真正回答了我的问题。我很想知道可以将哪些其他特殊参数传递给事件处理程序中指定的函数,以及如何将参数解释为元素。我选择了最佳答案,因为他提供了一个指向 mdn 的链接,其中描述了 EventHandler 接口。
【问题讨论】:
-
你应该检查这个网站,它看起来可能有用:javascript.info/tutorial/obtaining-event-object
-
element.onclickfunction = ...- 你的意思是element.onclick = ...- 接收单个参数,即事件对象,而回调函数中的this是触发事件的元素(注意:internet explorer可能会有所不同,我不在乎找到哪个版本做什么,这是留给开发人员的简单任务) -
在 JavaScript 中,您应该使用
addEventListener('click',function[, capture])而不是element.onclick。除非您完全控制页面的所有 HTML 和 JavaScript,否则使用element.onxxxxxx可能会破坏其他代码,因为分配给它会替换已在 HTML(通过onxxxxxx属性)或在 JavaScript 中(使用.onxxxxxx属性或属性)。使用addEventListener()不会干扰其他代码。
标签: javascript html onclick onchange