2010-06-22 3 views
0

J'ai bulid une classe js qui est d'avoir le paramètre de contrôle (contrôle html), je tente d'ajouter dinamicly onchange événement au contrôle, mais j'ai l'erreur folowing:d'erreur: htmlfile: Non implémenté

htmlfile: non implémenté

//-------------- 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 
    } 
} 

Répondre

1

En écrivant this.el.onclick = fn(element), vous appelerfn immédiatement, et en attribuant tout ce qui fn retourne à onclick.

Vous devez faire une fonction anonyme qui appelle fn avec les arguments que vous voulez qu'il se, comme ceci:

this.el.onclick = function() { return fn(element); }; 

Cependant, ce n'est pas la bonne façon d'assigner des gestionnaires d'événements en Javascript .

Vous devez appeler attachEvent (pour IE) ou addEventListener (pour tout le reste), comme ceci:

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"); 
} 
+0

Non seulement appeler mais lier à this.el.onclick – user368038

+0

@haroldis: Non, vous n'êtes pas le lier. Vous êtes en train de le lier, mais vous ne réussissez pas. – SLaks

Questions connexes