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代码>