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

                                  绑定事件

    绑定事件有三种方式:

      第一种,很土的,不管什么行为样式结构分离的,直接在标签里加事件

            如<input type="button" value="点击"  onclick="say();"/>

            看完整代码:

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^案件开始^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    ================= js部分===============

             <script type="text/javascript"><!--此处为行为部分-->
     
              function xin(){
                       alert("abc");
              }
      
         
           </script>

    ===============html 部分===================

    <input type="button"  onclick="xin()" value="点击" /><!--结构部分-->

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^案例结束^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

    代码解释:

      上面的代码写的不好,因为它相当于

           <script type="text/javascript"><!--此处为行为部分-->
     
              function xin(){
                       alert("abc");
              }

            xin();//注意这里,如果在<input type="button" value="点击" onclick=xin() ;/>就是在这里调用这么个方法,此时这个方法属于window了.

           </script>

    第二种绑定方式:

        给dom对象直接加事件

        document.getElementByTagName("input")[0].onclick=function (){ aler("abc")};

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^第二种绑定方式完整代码^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    js部分:

     <script type="text/javascript"><!--此处为行为部分-->
        window.onload=function (){
            var buttonObj=document.getElementsByTagName("input")[0];//给按钮加个click事件t*/

           buttonObj.onclick=function(){
                   alert("xin");

               注意:这样的绑定方式,优点:         

                            当alert(this);时,代表的是当前对象。即button这个dom对象

                         不足:不能给一个事件绑定多个执行函数。
            }  
     }
     </script>

    html部分:

      <input type="button"  value="点击" /><!--结构部分-->

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^案例结束^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

    第三绑定方式domLev3事件绑定标准,为了弥补第二种方式不能绑定多个事件而产生

    注意:第三种方式分支持w3c和IE非支持W3c而讨论

    addEventListener('事件',函数);  // 第一个参数事件参数, 没有前缀"on", w3c的标准,IE不支持

     

    注意点1: 如果添加了多个事件处理函数, 按"添加时的先后顺序来执行"

    注意占2: 事件处理函数中的this 指代 DOM节点自身 (w3c标准)

    注意点3: 第一个事件参数,一律把事件名称的'on'去掉 (w3c标准)

     

    去除绑定

    removeEventListener('事件',函数)

     

     

    IE下绑定事件与解除事件的方法

    attachEvent('事件',函数)   // 注意: 事件 要加on

    detachEvent('事件',函数) // 事件依然要加on

     

     

    总结一下:

    W3c addEventListener 与IE的attachEvent()的不同

    1: 函数名不同

    2: 事件名不同, IE下要加on,w3c不加on

    3: 加事件后的执行顺序不同, w3c按绑定事件的顺序来执行, 而IE6,7,是后绑定的事件先发生.

    4: this的指向, w3c中,绑定函数中的this指向 DOM对象, 而IE6,7中,指向window对象

  • 相关阅读:
    js运动框架
    关闭树莓派的指示灯
    利用Windows系统自带的Powershell功能计算文件的MD5、SHA256等Hash值
    CentOS下Zabbix Server 安装
    STM32开发——bootloader跳转App执行的实现
    ESP8266或ESP32使用ESP-IDF开发读取DHT12温度湿度
    Linux下V4L2捕捉画面+H264压缩视频+帧缓冲显示视频————结合三个部分工作
    Linux下V4L2捕捉画面+H264压缩视频+帧缓冲显示视频————帧缓冲显示视频
    Linux下V4L2捕捉画面+H264压缩视频+帧缓冲显示视频————V4L2捕捉画面
    树莓派上安装Qt5 MQTT支持
  • 原文地址:https://www.cnblogs.com/songqiaoli/p/2529392.html
Copyright © 2011-2022 走看看