DOM事件处理

1.事件处理器(event handler)

   onsubmit,onchange,onfocus,onblur,onmouseover,onmouseout,onmousedown,onmousedown,ontouchstart,ontouchend,ontouchmove,orientationchange......

  形式: eg.为按钮元素添加事件处理:      var btn = getElementById('btn'); 

                     btn.onclick = function()  {

                              //do something...... 

                             };

  局限性:对特定类型事件只能设置一个事件处理函数

2.事件监听器(event listener)

  IE8及以前:attachEvent

  标准DOM:addEventListener

  (1)不传参:

      eg.1.事件处理函数: function dosth (){}

         2.事件监听:var btn = getElementById('btn');

              btn.addEventListener('click',dosth,false);

  (2)传参(将事件处理函数嵌套在匿名函数中):

      eg. 1.事件处理函数:function dosth ( a , b ){}

        2.事件监听:var btn = getElementById('btn');

              btn.addEventListener('click',function(){

                                    dosth ( i , j ); 

                                  },false);  //false:不启动捕获模式(为方便理解,应先了解DOM事件传递)

      与事件处理器区别:1.同类型事件可以添加多个事件监听器

               2.不需要用等号赋值

               3.需要兼容性处理:    var btn = getElementById('btn');

                            if  (btn.addEventListener)

                          {

                              btn.addEventListener('click',function(){

                                    dosth ( i , j ); 

                                  },false);

                          }

                          else{

                              btn.attachEvent('on'+click,function(){

                                    dosth ( i , j ); 

                                  },false);

                          }

               4.可解除绑定:if  (btn.removeEventListener)

                        {

                            btn.removeEventListener('click',function(){

                                    dosth ( i , j ); 

                                  },false);

                        }

                        else{

                            btn.detachEvent('click',function(){

                                    dosth ( i , j ); 

                                  },false);

                        }

原文地址:https://www.cnblogs.com/pada/p/3663339.html