Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 您可以将哪些参数传递给html属性onchange、onclick等。?_Javascript_Html_Onclick_Onchange - Fatal编程技术网

Javascript 您可以将哪些参数传递给html属性onchange、onclick等。?

Javascript 您可以将哪些参数传递给html属性onchange、onclick等。?,javascript,html,onclick,onchange,Javascript,Html,Onclick,Onchange,当我开始学习javascript时,我认为浏览器只需在元素的onclick属性中运行javascript,就好像它在脚本标记中一样。但是我意识到情况并非如此,因为您可以在这些属性中使用某些参数。例如onclick=“foo(this,event)”将触发的事件和触发事件的元素传递给函数foo 我想知道在这些标签中还可以使用哪些其他参数?w3schools的文档中没有提到这方面的内容。我还想知道这些属性是如何实现的;函数是如何调用的,在什么范围内(我知道foo将像element.foo()一样被调

当我开始学习javascript时,我认为浏览器只需在元素的
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
可能会破坏其他代码,因为分配给它会重新执行