在2个公用的JS里面, 对一个文本框 都监听了同一个事件(比如onclick) ,  所以后面执行的替换掉了前面的。
怎么写才不会替换掉? 达到叠加的作用:2个时间的函数都能执行??? ;  条件是:不能把一个事件的函数移到另一个里面, 因为可能另一个别人要用;  

解决方案 »

  1.   

    有用到JQ?
      JQ ,   bind("click",  fn)
      

  2.   

    //addEventListener
    //attachEvent
      

  3.   

    addEventListener/attachEvent 可以绑定多个事件函数
    或者用
    var obj = document.getElementBuId('xxx');
    var oldev = obj.onclick();
    obj.onclick = function(e){
        //新事件代码
        if(oldev) oldev.call(this,e);
    }
      

  4.   

    var obj = document.getElementBuId('xxx');
    var oldev = obj.onclick;
    obj.onclick = function(e){
        //新事件代码
        if(oldev) oldev.call(this,e);
    }
      

  5.   


    addEventListener  IE用不了, 对象为空
    attachEvent this无法指向事件源
      

  6.   


    用jquery  bind("click",  fn) 就不会替换么??
      

  7.   

    我现在的代码是:   XXX.onclick=function(){ ... }
      

  8.   


    用jquery  bind("click",  fn) 就不会替换么??
    是的 
    不用JQ:
     IE  htmlObj.attachEvent("onclick", fn)
     非IE htmlObj.addEventListener("click",fn, false); 
      

  9.   


    addEventListener  IE用不了, 对象为空
    attachEvent this无法指向事件源
    判断呀
    function addEvent (obj,type,fn){
    if(!obj)return null;
    if(obj.addEventListener){
    obj.addEventListener(type,function(event){
    var rtn = fn.call(obj,event);
    if(rtn==false){
    event.cancelBubble = true;
    event.preventDefault();
    }
    },false)
    }else {
    obj.attachEvent('on'+type,function(){
    var rtn = fn.call(obj,window.event);
    if(rtn==false){
    window.event.cancelBubble = true;
    return false;
    }
    })
    }
    }
      

  10.   

    addEventListener
     attachEvent