element.onkeypress = function(e) {
if(e.keyCode) {
element.keyCode = e.keyCode;
} else {
element.keyCode = e.charCode;
}
};
同样在java脚本中,还有
<input onChange="a(event)"/>
<script>
function a(event) {
alert(event.target.value);
}
</script>
作为参数接收,我如何知道是否必须为参数而不是e设置事件?第二个例子不会工作,如果参数是除了事件以外的任何东西都不是javascript?
答案 0 :(得分:3)
使用on*
属性或addEventListener
绑定事件处理程序时,事件对象将作为第一个参数传递。您可以像编写函数表达式或函数声明时那样自己命名。您可以命名参数的正常限制适用(即它们必须是有效的标识符名称)。 event
,e
和evt
是该变量的通用名称。
使用on*
属性绑定事件处理程序时,您只编写函数体(即function (event) {
和}
是隐含的。对象将在event
变量中提供。
答案 1 :(得分:0)
function(e)
是带参数的普通函数。参数可以包含您想要的任何名称。
在onkeypress
内,浏览器提供的事件具有一个始终名为event
的特殊参数。如果将它传递给您自己的函数,该函数可以像往常一样使用它想要的任何参数名称。
答案 2 :(得分:0)
使用现代标准设置事件回调时,客户端会自动将对事件对象的引用传递给每个事件回调函数。它永远是第一个论点。
你不需要做任何事情来实现这一目标。您需要做的就是捕获引用,您可以使用任何您喜欢的命名参数。由于您是参数的接收者,因此您选择的名称不必与任何内容匹配。你可以调用任何东西(这是一个有效的标识符)。
现在,您的示例才有效,因为在网页的全局范围内,window
对象公开了一个event
对象,这就是a(event)
正在访问的对象。:
<input onChange="a(event)"/>
<script>
function a(event) {
alert(event.target.value);
}
</script>
但是,这不是应该建立事件的现代方式。不应使用内联HTML事件属性(onclick
,onchange
等)( here's why )。
现代方法如下,请注意事件回调函数(a
)的注册并不表示事件的任何内容,但实际函数能够获取它所需的信息通过期待一个论点。
document.querySelector("input").addEventListener("change", a);
function a(anyNameIsGoodHere) {
alert(anyNameIsGoodHere.target.value);
}
&#13;
<div>Type anything into the text field and then hit TAB</div>
<input>
&#13;
答案 3 :(得分:0)
您可以通过在每个事件之后添加console.log(&#34;此处为某些文本&#34;)来查找在特定事件上触发的参数。
您可以在控制台中查看日志
答案 4 :(得分:-1)
当您定义一个函数时,您可以调用任何您想要的参数(event,e,foo等...),当您调用该函数时,您必须使用正确的名称来传递给函数。
<input onChange="a(event)"/>
<script>
function a(foo) {
alert(foo.target.value);
}
</script>
<input onChange="b(event)"/>
<script>
function b(aParameter) {
alert(aParameter.target.value);
}
</script>