Enviar argumentos a una función de devolución de llamada de eventListener requiere crear una función aislada y pasar argumentos a esa función aislada.
Aquí hay una pequeña y agradable función de ayuda que puedes usar. Basado en el ejemplo anterior de "Hola mundo".)
Una cosa que también se necesita es mantener una referencia a la función para que podamos eliminar el oyente limpiamente.
// Lambda closure chaos.
//
// Send an anonymous function to the listener, but execute it immediately.
// This will cause the arguments are captured, which is useful when running
// within loops.
//
// The anonymous function returns a closure, that will be executed when
// the event triggers. And since the arguments were captured, any vars
// that were sent in will be unique to the function.
function addListenerWithArgs(elem, evt, func, vars){
var f = function(ff, vv){
return (function (){
ff(vv);
});
}(func, vars);
elem.addEventListener(evt, f);
return f;
}
// Usage:
function doSomething(withThis){
console.log("withThis", withThis);
}
// Capture the function so we can remove it later.
var storeFunc = addListenerWithArgs(someElem, "click", doSomething, "foo");
// To remove the listener, use the normal routine:
someElem.removeEventListener("click", storeFunc);