GTS*_*Joe 2 javascript callback event-listener addeventlistener
在以下代码中:
document.getElementById( 'elem' ).addEventListener( 'blur', function() {
myScript();
});
Run Code Online (Sandbox Code Playgroud)
如何将 document.getElementById('elem') 对象传递给 myScript()?我在想像关键字“this”这样的东西,这样我就可以对回调函数中的元素采取行动。
this
绑定this
对象并调用函数:
如果您需要在执行前myScript()
执行一些逻辑,则应使用此方法
function myScript() {
console.log(this.id);
}
document.getElementById('elem').addEventListener('click', function() {
myScript.bind(this)();
});
Run Code Online (Sandbox Code Playgroud)
<button id="elem">Click me!</button>
Run Code Online (Sandbox Code Playgroud)
myScript
使用函数调用函数call
:
如果您需要在执行前myScript()
执行一些逻辑,则应使用此方法
另请阅读 function Function.prototype.apply()
。
function myScript() {
console.log(this.id);
}
document.getElementById('elem').addEventListener('click', function() {
myScript.call(this);
});
Run Code Online (Sandbox Code Playgroud)
<button id="elem">Click me!</button>
Run Code Online (Sandbox Code Playgroud)
直接传递函数:
function myScript() {
console.log(this.id);
}
document.getElementById('elem').addEventListener('click', myScript);
Run Code Online (Sandbox Code Playgroud)
<button id="elem">Click me!</button>
Run Code Online (Sandbox Code Playgroud)
或传递对象this
:
function myScript(element) {
console.log(element.id);
}
document.getElementById('elem').addEventListener('click', function() {
myScript(this); //Here you will need to use the param.
});
Run Code Online (Sandbox Code Playgroud)
<button id="elem">Click me!</button>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6821 次 |
最近记录: |