JavaScript 常用的事件

简介: JavaScript 常用的事件

文章目录


JavaScript 事件

事件

定义:事件是浏览器与用户交换的行为;

onmousemove

定义:鼠标元素移动时触发;

clientX

定义:获取鼠标的水平坐标;

clientY

定义:获取鼠标的垂直坐标;

createElement

定义:创建标签;

appendChild

定义:将创建的标签添加到指定的元素下;

案例

//将创建好的li标签添加到ul下
u1.appendChild(li);

target

定义:表示触发事件的对象;

addEventListener

定义:同时为一个元素的相同事件绑定多个响应函数,当事件被触发时,响应函数将会安装函数的绑定的顺序执行(可以同时为一个元素绑定多个事件)

事件对象

定义:当事件触发时,浏览器每次都传递一个实参进来;

案例

显示当前鼠标坐标位置

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
      #areaDiv{
        width: 500px;
        height: 200px;
        border: 1px solid black;
      }
      #showMsg{
        width: 500px;
        height: 100px;
        margin-top: 30px;
        border: 1px solid black;
      }
    </style>
    <script type="text/javascript">
      window.onload = function(){
        /**
         * 当属标在areaDiv移动时,在showMsg中显示鼠标的坐标
         * **/
         var areaDiv = document.getElementById("areaDiv");
         var showMsg = document.getElementById("showMsg");
         /**
          * onmousemove
          *  鼠标元素移动时触发
          *  
          * 事件对象
          *   当事件触发时,浏览器每次都传递一个实参进来
          * **/
          areaDiv.onmousemove = function(event){
            /**
             * clientX可以获取鼠标的水平坐标
             * clientY可以获取鼠标的水平坐标垂直
             * **/
             var x = event.clientX;
             var y = event.clientY;
             //在showMsg显示坐标
             showMsg.innerHTML = "x= " +x + ",y= " +y;
          }
      }
    </script>
  </head>
  <body>
    <div id="areaDiv"></div>
    <div id="showMsg">
    </div>
  </body>
</html>

运行效果4edc953e2c684bbe819ffa954c899c08.png

事件冒泡

定义:当后代元素上的事件触发时,其祖先元素上的事件也会被触发;

案例

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
      #box1{
        width: 200px;
        height: 200px;
        background-color: red;
      }
      #s1{
        background-color: green;
      }
    </style>
    <script type="text/javascript">
      window.onload = function(){
        /**
         * 事件冒泡: (Bubble) 吧bou
         *  当后代元素上的事件触发时,其祖先元素上的事件也会被触发
         * 
         * 
         *  
         * **/
        //为是s1绑定单机响应函数
        var s1 = document.getElementById("s1");
        s1.onclick = function(event){
          event = event || window.event;
          alert("s1");
          //取消冒泡
          event.cancelBubble = true;
        };
        //为是box1绑定单机响应函数
        var box1 = document.getElementById("box1");
        box1.onclick = function(){
          event = event || window.event;
          alert("box1");
          //取消冒泡 cancelBubble 取消冒泡事件
          event.cancelBubble = true;
        };
        //为是body绑定单机响应函数
        document.body.onclick = function(){
          alert("body");
        };
      };
    </script>
  </head>
  <body>
    <div id="box1">
      我是box1
      <span id="s1">我是一个span</span>
    </div>
  </body>
</html>

运行效果

4edc953e2c684bbe819ffa954c899c08.png

事件委派

定义:将事件统一绑定给祖先元素,当后代元素上触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件;

案例

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
      window.onload = function(){
        //获取ul
        var u1 = document.getElementById("u1");
        //点击按钮添加超链接
        var btn01 = document.getElementById("btn01");
        btn01.onclick = function(){
          //创建一个li
          var li = document.createElement("li");
          li.innerHTML = "<li><a href='javascript:;' class='link'>新建超链接</a></li>"
          u1.appendChild(li);
        };
        /**
         * 获取所有a标签,绑定单机响应函数
         * 
         * **/
        var allA = document.getElementsByTagName("a");
        //遍历
        // for(var i=0;i<allA.length;i++){
        //  allA[i].onclick = function(){
        //    alert("aaa");
        //  };
        // }
        /**
         * 事件的委派
         *  将事件统一绑定给祖先元素,当后代元素上触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件
         * 
         * 只绑定一次事件,即可应用到多个元素上,即使元素是后添加的
         * **/
        //为ul绑定单机响应函数 
        u1.onclick = function(event){
          event = event || window.event;
          //如果触发事件对象是期望的元素执行,否则不执行
          /**
           * target
           *  event中的target表示触发事件的对象
           * **/
           if(event.target.className == "link"){
             alert("1111");
           }
        };
      };
    </script>
  </head>
  <body>
    <button id="btn01">添加超链接</button>
    <ul id="u1" style="background-color: greenyellow;">
      <li>
        <p>我是p元素</p>
      </li>
      <li><a href="javascript:;" class="link">超链接一</a></li>
      <li><a href="javascript:;" class="link">超链接二</a></li>
      <li><a href="javascript:;" class="link">超链接三</a></li>
    </ul>
  </body>
</html>

运行效果

4edc953e2c684bbe819ffa954c899c08.png

事件绑定

案例

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
      window.onload = function(){
        /**
         * 点击按钮后弹出内容
         * **/
         var btn01 = document.getElementById("btn01");
         /**
          * 使用 对象.事件 = 函数的形式绑定响应函数
          *  它只能为一个元素的一个事件绑定一个响应函数
          *  不能绑定多个,如果绑定多个,则后边的会覆盖掉前面的
          * **/
         //绑定第一个响应函数
         // btn01.onclick = function(){
          // alert("1111"); 
         // };
         //  //绑定第二个响应函数
         // btn01.onclick = function(){
         //   alert("2222"); 
         // };
         /**
          * addEventListener()
          *  通过这个方法可以为元素绑定响应函数
          *   参数:
          *     1.事件的字符串,不用on;
          *     2.回调函数,当事件触发时该函数会被调用
          *     3.是否在捕获阶段触发事件,需要一个bool值,一般都传false
          * 使用addEventListener()可以同时为一个元素的相同事件绑定多个响应函数,当事件被触发时,响应函数将会安装函数的绑定的顺序执行
          * 可以同时绑定多个事件
          * 
          * IE8一下不支持
          * **/
         btn01.addEventListener("click",function(){
           alert("11");
         },false);
         btn01.addEventListener("click",function(){
            alert("22");
         },false);
         // bind(btn01,"click",function(){
          //  alert("111");
         // });
      };
      //定义一个函数
      /**
       * 参数:
       *  obj 要绑定事件的对象
       *  eventStr 事件的字符串
       * callback 回调函数
       * **/
      // function bind(obj,eventStr,callback){
      //  if(obj.addEventListener){
      //    //大部分浏览器兼容
      //    obj.addEventListener(eventStr,callback,false);
      //  }else{
      //    /**
      //     * this是由调用方式调用的
      //     * **/
      //    //IE8及以下
      //    obj.attachEvent("on"+eventStr,callback);
      //  }
      //}
    </script>
  </head>
  <body>
    <button id="btn01">点我一下</button>
  </body>
</html>


目录
相关文章
|
3月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
5月前
|
JavaScript 前端开发
js事件队列
js事件队列
146 55
|
3月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
46 3
|
4月前
|
JavaScript 前端开发
JavaScript 事件
JavaScript 事件
42 2
|
5月前
|
JavaScript 前端开发
JavaScript 事件的绑定
JavaScript 事件的绑定
51 0
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
55 5
|
3月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
58 6
|
4月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
29 5
|
4月前
|
监控 JavaScript 前端开发
|
3月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
179 0