Javascript 是否添加第二个onChange事件?
您好,我在网上找到了这个脚本,它向元素添加了一个onChange事件,现在我想向同一元素添加第二个onChange事件。下面是脚本:Javascript 是否添加第二个onChange事件?,javascript,onchange,Javascript,Onchange,您好,我在网上找到了这个脚本,它向元素添加了一个onChange事件,现在我想向同一元素添加第二个onChange事件。下面是脚本: document.getElementById('piname').onchange = function() { removeChildren({ parentId: 'account_table', childName: 'extraaccount' }); } 我想添加的onChange事件是: showAc
document.getElementById('piname').onchange =
function() {
removeChildren({
parentId: 'account_table',
childName: 'extraaccount'
});
}
我想添加的onChange事件是:
showAccount(this.value)
使用addEventListener()
(和attachEvent
作为后备方案,如果需要)。例如: 例如,使用回退:
var element = document.getElementById('piname');
if(element.addEventListener){
element.addEventListener("change", function(e){
e = e || event;
showAccount(e.target.value);
}, false);
}
else if(element.attachEvent){
element.attachEvent("onchange", function(e){
e = e || event;
showAccount(e.target.value);
});
}
最简单的方法是缓存旧函数并从新函数调用它:
var el = document.getElementById('piname'),
old = el.onchange;
el.onchange = function () {
old.call(el);
showAccount(this.value);
}
除此之外,您可以使用addEventListener
(W3C标准)和attachEvent
(IE8及更低版本):
这些方法允许您将任意多个处理程序附加到事件。通过将
getElementById
的结果存储在变量中,减少元素查找。另外,此
已正确绑定到addEventListener
的元素。Hmm@Andy@Digital im收到以下错误…未捕获异常:[异常…“参数不足”nsresult:“0x80570001(NS错误\u XPC\u参数不足)”位置:“JS frame
@Jonah,添加false
作为addEventListener
中的最后一个参数。FireFox对此抱怨,Chrome和Safari没有。@Zanfa:是的,这在FireFox 5之前都是正确的,包括FireFox 5。它在Fx 6中是可选的。@Jonah使用第二个示例,它有一个使用附件的IE的备用项。你能解释一下旧的.call(el)吗?”编辑:nvm
var el = document.getElementById('piname'),
old = el.onchange;
el.onchange = function () {
old.call(el);
showAccount(this.value);
}
var el = document.getElementById('piname'),
fn = function (e) {
e = e || window.event;
showAccount((e.target || e.srcElement).value);
};
if ("addEventListener" in el) {
el.addEventListener("change", fn, false);
}
else {
el.attachEvent("onchange", fn);
}