Когда вы пишете this.el.onclick = fn(element)
, вы немедленно звоните fn
и назначаете все, что fn
возвращает onclick
.
Вам нужно создать анонимную функцию, которая вызывает fn
с аргументами, которые вы хотите получить, например:
this.el.onclick = function() { return fn(element); };
Однако это неправильный способ назначения обработчиков событий в Javascript.
Вы должны позвонить attachEvent
(для IE) или addEventListener
(для всего остального), например:
function bind(elem, eventName, handler) {
if (elem.addEventListener)
elem.addEventListener(eventName, handler, false);
else if (elem.attachEvent)
elem.attachEvent("on" + eventName, handler);
else
throw Error("Bad browser");
}