我已经建立了一个具有控件(html控件)参数的js类,我尝试将dinamicly 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
}
}
答案 0 :(得分:1)
通过撰写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");
}