Javascript:ChangeOnChange并使用此参数

Javascript:ChangeOnChange并使用此参数,javascript,onchange,Javascript,Onchange,通过搜索网络,我发现我不能使用document.getElementById(“myid”).onchange=“myfunc(this);”

通过搜索网络,我发现我不能使用
document.getElementById(“myid”).onchange=“myfunc(this);”document.getElementById(“myid”).onchange=myfunc(this)
相反,此指的是什么?我希望
this
是触发onchange事件的HTML元素,而不是我更改onchange属性的函数。

您可以接收事件并从中获取源元素:

function myfunc(ev) {
    console.log(ev.srcElement);
}

document.getElementById("myid").onchange = myfunc;
在您的示例中,您不是使用eventhandler引用函数,而是执行函数。这就是为什么
可能引用窗口(取决于行代码所在的位置)或其他元素的原因

但是
当您将eventhandler定义为html元素的属性时,此
会有所帮助:

更多信息:
标准方法不是将元素作为第一个参数传递给函数,而是使用
this
引用函数中的元素,因为
this
将自动绑定到该元素。这来自,但对于-事件属性上的所有
,都是如此:

在处理程序中,
将是触发事件的元素

所以你可以写:

document.getElementById("myid").onchange = myfunc;
。。。在你的职能中:

function myfunc() {
    console.log(this.id + ' changed'); // you can just refer to `this`
}
如果出于某种原因确实需要函数的第一个参数作为相关元素,则可以使用
bind

var elem = document.getElementById("myid");
elem.onchange = myfunc.bind(elem, elem);
请注意,
elem
指定了两次;第一次定义此
,第二次定义第一个参数的值

因此,现在这将起作用:

function myfunc(elem) {
    console.log(elem.id + ' changed');
}
document.getElementById(“myid”).onchange=myfunc