问答详情
源自:4-3 [DOM事件] QQ面板状态切换效果

关于addEventListener和function(event)的问题

首先一个问题是function(event)在什么时候用到

例如:

loginState.onclick=function(e){
   	 e = e || window.event;
     if(e.stopPropagation){
          e.stopPropagation();
     }else{
          e.cancelBubble=true;
     }
   	 stateList.style.display='block';
   }

这一段代码中用到了,然而在这段代码中并没有用到。

lis[i].onmouseout=function(){
      	this.style.background='#FFF';
      }

第二个问题是:addEventListener和function(event)有什么关系

例如

loginState.onclick=function(e){
   	 e = e || window.event;
     if(e.stopPropagation){
          e.stopPropagation();
     }else{
          e.cancelBubble=true;
     }
   	 stateList.style.display='block';
   }

这一段和下面的一段是不是作用一致

loginState.addEventListener('click',function(){
    
    if(loginState.stopPropagation){
          loginState.stopPropagation();
     }else{
          loginState.cancelBubble=true;
     }
     stateList.style.display='block';

   },false)


提问者:宝慕林6972327 2016-08-01 01:06

个回答

  • 慕粉wz
    2016-09-05 16:00:40

    1,因为你要改变事件的属性,说要要传入参数e,不然你怎么知道事件是那个参数呢

    2,两种方式是一致的,第一种是DOM0的写法,第二种是DOM2的写法,不过addEventListener在老版本IE中不支持,需要用attachEvent,最新的IE11已经支持addEventListener。

  • 继续努力的小楠
    2016-08-24 00:21:56

    我认为,你的第二个问题中,两段代码的作用应该是一样,他俩的区别应该在于,addEventListener()是添加事件的方法,而function是一个函数,只是用于传参,不知道我理解的对不对

  • 一个学渣
    2016-08-01 15:03:02

    你需要用到事件的事件对象(属性和方法)的时候,例如IE的target,type,stopPropagation这些,就要引入event参数,第一个问题的第二段代码没有涉及 那些属性和方法,所以不需要引入event参数