Javascript 将元素传递给事件侦听器回调函数
在以下代码中:Javascript 将元素传递给事件侦听器回调函数,javascript,callback,addeventlistener,event-listener,Javascript,Callback,Addeventlistener,Event Listener,在以下代码中: document.getElementById( 'elem' ).addEventListener( 'blur', function() { myScript(); }); 如何将document.getElementById('elem')对象传递给myScript()?我想到了类似关键字“this”的东西,这样我就可以对回调函数中的元素进行操作。传递对象有四种方法this 绑定此对象并调用函数: 如果在执行myScript()之前需要执行某些逻辑,则应使用此方法
document.getElementById( 'elem' ).addEventListener( 'blur', function() {
myScript();
});
如何将document.getElementById('elem')对象传递给myScript()?我想到了类似关键字“this”的东西,这样我就可以对回调函数中的元素进行操作。传递对象有四种方法this
绑定此
对象并调用函数:
如果在执行myScript()
之前需要执行某些逻辑,则应使用此方法
函数myScript(){
console.log(this.id);
}
document.getElementById('elem')。addEventListener('click',function(){
bind(this)();
});代码>
点击我代码>关于Ele的答案,您应该更喜欢绑定方法。正如dfsq在评论中所说,您可以
element.addEventListener('click', function() {
myScript(element);
}
但是,使用这样的匿名函数意味着您将无法删除事件侦听器
const element = document.getElementById('elem');
// creates a new function instance with element bound as first arg
const eventListenerCallback = myScript.bind(null, element);
element.addEventListener('click', eventListenerCallback);
function myScript(element, event) {
element.setAttribute('data-clicked', 'true');
// remove the event listener once it has been clicked
element.removeEventListener('click', eventListenerCallback);
}
是的,使用此
<代码>document.getElementById('elem').addEventListener('blur',function(){myScript(this);})
console.log(this)
在回调中会显示this
等于您的元素您还应该提到myScript.call(this)
method;)