zoukankan      html  css  js  c++  java
  • JavaScript事件绑定的三种方式

     

     


     (一)事件绑定的三种方式

    (1)通过on的形式

    <script type="text/javascript">
    	var div = document.getElementsByTagName('div')[0];
    	
    	div.onclick = function(){
    		console.log('a');
    	}
    </script>
    

     兼容性好,但是每个事件只能绑定一个处理函数;

    (2)通过addEventListener形式

    形式为obj.addEventListener(事件类型,处理函数,false)

    <script type="text/javascript">
    	var div = document.getElementsByTagName('div')[0];
    	
    	div.addEventListener('click',function(){
    		console.log('b');
    	},false);
    </script>
    

     IE9以下版本不兼容;

      还可以为一个事件绑定多个处理函数,如下示例:

    <script type="text/javascript">
    	var div = document.getElementsByTagName('div')[0];
    	
    	div.addEventListener('click',function(){
    		console.log('b');
    	},false);
    	div.addEventListener('click',function(){
    		console.log('c');
    	},false);
    </script>
    

      

    (3)attachEvent

    <script type="text/javascript">
    	var div = document.getElementsByTagName('div')[0];
    
    	div.attachEvent('onclick',function(){
    		console.log('c');
    	});
    </script>
    

      IE独有;可以为一个事件绑定多个处理函数

     


     (二)上述三种绑定时间的this问题

     

     1 <body>
     2     <div style="100px;height:100px;background-color:green">
     3         
     4     </div>
     5 <script type="text/javascript">
     6     var div = document.getElementsByTagName('div')[0];
     7 
     8     function addEvent(elem,type,handle){
     9         if(elem.addEventListener){
    10             elem.addEventListener(type,handle,false);
    11         }else if(add.attachEvent){
    12             elem.attachEvent('on'+type,function(){
    13                 handle.call(elem);
    14             });
    15         }else{
    16             elem['on' + type] = handle;
    17         }
    18     }
    19     function handle(elem){
    20         console.log(this);
    21     }
    22 
    23     addEvent(div,'click',handle);
    24 
    25 </script>
    26 </body>

     


     (三)解除事件处理程序

    如下函数功能实现只有点击第一次有效

     1 <body>
     2     <div style="100px;height:100px;background-color:green">
     3         
     4     </div>
     5 <script type="text/javascript">
     6     var div = document.getElementsByTagName('div')[0];
     7 
     8     div.onclick = function (){
     9         console.log('a');
    10         this.onclick = null; //取消绑定事件
    11     }
    12 </script>
    13 </body>

  • 相关阅读:
    Ubuntu18.04安装NAVIDIA驱动
    ubuntu 设置root用户密码并实现root用户登录
    配置ubuntu允许远程SSH连接
    Centos7安装yum命令
    NVDIA往期在线研讨会地址 论坛提问地址
    二进制安装单master节点测试环境k8s集群
    kubeadm初始化k8s-延长证书过期时间
    kubeadm初始化k8s-删除控制节点-重新把控制节点加入集群步骤
    kubeadm安装的多master节点的k8s高可用集群
    二进制安装多master节点的k8s集群
  • 原文地址:https://www.cnblogs.com/wood2012/p/8012876.html
Copyright © 2011-2022 走看看