Ошибка js: htmlfile: не реализовано - PullRequest
0 голосов
/ 22 июня 2010

У меня есть bulid js-класс с параметром control (html Control), я пытаюсь добавить динамически событие onchange в элемент управления, но у меня появляется следующая ошибка:

htmlfile: не реализовано

//-------------- the code

Contrl.prototype.AddChangeEvent = function() {

    var element = this.docID;
    var fn = function onChange(element) {

     // action



    };

    if (this.tag == "input" && (this.el.type == "radio")) {
        this.el.onclick = fn(element); // there i have the error 
    }
    else {
        this.el.onchange = fn(element); // there i have the error 
    }
}

1 Ответ

1 голос
/ 22 июня 2010

Когда вы пишете 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...