Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 将元素传递给事件侦听器回调函数_Javascript_Callback_Addeventlistener_Event Listener - Fatal编程技术网

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;)