Javascript 您可以将哪些参数传递给html属性onchange、onclick等。?
当我开始学习javascript时,我认为浏览器只需在元素的Javascript 您可以将哪些参数传递给html属性onchange、onclick等。?,javascript,html,onclick,onchange,Javascript,Html,Onclick,Onchange,当我开始学习javascript时,我认为浏览器只需在元素的onclick属性中运行javascript,就好像它在脚本标记中一样。但是我意识到情况并非如此,因为您可以在这些属性中使用某些参数。例如onclick=“foo(this,event)”将触发的事件和触发事件的元素传递给函数foo 我想知道在这些标签中还可以使用哪些其他参数?w3schools的文档中没有提到这方面的内容。我还想知道这些属性是如何实现的;函数是如何调用的,在什么范围内(我知道foo将像element.foo()一样被调
onclick
属性中运行javascript,就好像它在脚本标记中一样。但是我意识到情况并非如此,因为您可以在这些属性中使用某些参数。例如onclick=“foo(this,event)”
将触发的事件和触发事件的元素传递给函数foo
我想知道在这些标签中还可以使用哪些其他参数?w3schools的文档中没有提到这方面的内容。我还想知道这些属性是如何实现的;函数是如何调用的,在什么范围内(我知道foo将像element.foo()
一样被调用,但对于其他javascript表达式则不是这样)。是否有全面的文档?我目前的最佳猜测是,实现如下所示:
element.onclickfunction = function(){
var event = new Event(...)
eval(element.onclick)
}
编辑:
没有一个回答真正回答了我的问题。我想知道还有哪些特殊参数可以传递给事件处理程序中指定的函数,以及如何将参数this解释为元素。我选择最佳答案是因为他提供了一个到mdn的链接,其中描述了EventHandler接口 在JavaScript中,您可以在任何DOM元素、文档本身、上下文窗口或任何其他支持事件的对象上注册事件侦听器。有一大堆事件是在一大堆web标准中定义的。列出这些内容的一个好资源是 注册到事件的EventListener只接受一个参数:事件。您可以看到,它只有一个方法,只接受一个参数 要将其他内容传递到事件处理程序中,可以利用闭包或
bind()
。我将借用来演示bind()
的工作原理:
elem.addEventListener(function(a1, a2, e) {
// inside the event handler, you have access to both your arguments
// and the event object that the event handler passes
}.bind(elem, arg1, arg2));
将elem
、arg1
和arg2
绑定到函数意味着函数的this
变为elem
,函数的前两个参数变为arg1
和arg2
。e
参数仍然是触发函数的事件,就像往常一样。当您希望将内容从事件处理程序外部传递到处理程序内部时,像这样的绑定非常有用。您可以阅读有关bind()
的更多信息
关于您关于
onclick()
的特定问题,除了向元素注册特定的click事件处理程序外,原则基本相同。它也只接受一个参数,即MouseEvent
对象。但与任何函数一样,您仍然可以将其他参数绑定到它。有关更多信息,请参阅。在JavaScript中,您可以在任何DOM元素、文档本身、上下文窗口或任何其他支持事件的对象上注册事件侦听器。有一大堆事件是在一大堆web标准中定义的。列出这些内容的一个好资源是
注册到事件的EventListener只接受一个参数:事件。您可以看到,它只有一个方法,只接受一个参数
要将其他内容传递到事件处理程序中,可以利用闭包或bind()
。我将借用来演示bind()
的工作原理:
elem.addEventListener(function(a1, a2, e) {
// inside the event handler, you have access to both your arguments
// and the event object that the event handler passes
}.bind(elem, arg1, arg2));
将elem
、arg1
和arg2
绑定到函数意味着函数的this
变为elem
,函数的前两个参数变为arg1
和arg2
。e
参数仍然是触发函数的事件,就像往常一样。当您希望将内容从事件处理程序外部传递到处理程序内部时,像这样的绑定非常有用。您可以阅读有关bind()
的更多信息
关于您关于
onclick()
的特定问题,除了向元素注册特定的click事件处理程序外,原则基本相同。它也只接受一个参数,即MouseEvent
对象。但与任何函数一样,您仍然可以将其他参数绑定到它。有关更多信息,请参阅。您应该查看此网站,它看起来可能很有用:element.onclickfunction=…
-您的意思是element.onclick=…
-接收单个参数,即事件对象,回调函数中的此
是触发事件的元素(注意:internet explorer可能不同,我不关心哪个版本做什么,这是留给开发人员的简单任务)请参阅。更一般地说,.在JavaScript中,您应该使用而不是元素。onclick
。除非您完全控制页面的所有HTML和JavaScript,否则使用元素。onxxxxxx
可能会破坏其他代码,因为分配给它会替换HTML或HTML中已定义的任何事件侦听器(通过onxxxxxx
属性)或在JavaScript中(使用.onxxxxxx
属性或属性)。使用addEventListener()
不会干扰其他代码。您应该检查此网站,它看起来可能很有用:element.onclickfunction=…
-您的意思是element.onclick=…
-接收单个参数,即事件对象,回调函数中的此
是触发事件的元素(注意:internet explorer可能不同,我不关心哪个版本做什么,这是留给开发人员的简单任务)请参阅。更一般地说,.在JavaScript中,您应该使用而不是元素。onclick
。除非您完全控制页面的所有HTML和JavaScript,否则使用元素。onxxxxxx
可能会破坏其他代码,因为分配给它会重新执行