zoukankan      html  css  js  c++  java
  • HTML 14 JS事件

    一 :什么是事件

      发生的某一件事;触发特定的条件,完成某一项功能

    二:学习的目的

      在特定的条件下,完成特定的功能

      条件满足的情况下,系统会自动执行 ( 回调 ) 绑定的方法

      学习要点: 

      1、事件的两种绑定方式 ***
      2、事件event *****
      3、冒泡和默认事件 *****
      4、鼠标事件 *****
      5、键盘事件 ***
      6、表单事件 ***
      7、文档事件 *
      8、图片事件 *
      9、页面滚动事件 *****

    三:

      事件的两种绑定方式:

      // on   // 非on

      1、on事件绑定

        当有两个 div 只打印 " 点击2 " ,原因,只能绑定最后一个方法

        解绑的方法:
         div.onclick = null;

      2、非on事件的绑定

        存在重复绑定

        事件解绑的方法:
        div.removeEventListener('click', fn)   // 注:绑定与移除需要指向同一个方法(地址)

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>事件的两种绑定方式</title>
     6 </head>
     7 <body>
     8     <div class="div">12345</div>
     9 </body>
    10 <script type="text/javascript">
    11     var div = document.querySelector('.div');
    12     // on事件
    13     div.onclick = function () {
    14         console.log("点击1");
    15     }
    16     div.onclick = function () {
    17         console.log("点击2");
    18     }
    19     // 只打印"点击2",原因,只能绑定最后一个方法
    20 
    21     // 事件的移除
    22     div.onclick = null;
    23 
    24 
    25     // 非on事件的绑定 *
    26     // addEventListener('事件名', 回调函数, 冒泡方式)
    27     div.addEventListener('click', function() {
    28         console.log("点击1");
    29     });
    30 
    31     var fn = function() {
    32         console.log("点击2");
    33     }
    34     div.addEventListener('click', fn);
    35     // 存在重复绑定
    36 
    37     // 事件的移除
    38     // removeEventListener('事件名', 回调函数名)
    39     div.removeEventListener('click', fn)
    40     // 注:绑定与移除需要指向同一个方法(地址)
    41 
    42 </script>
    43 </html>
    事件的两种绑定方式

      冒泡和默认事件:

       冒泡:父子级拥有同一的事件,在子级区域触发子级事件,父级也能捕获并响应

        点击传过来的是:MouseEvent,存储着鼠标触发事件的一系列信息

       默认:默认事件: 取消默认的事件动作,如鼠标右键菜单

        父级取消了默认事件,子级都被取消掉了

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>冒泡和默认事件</title>
     6     <style type="text/css">
     7         .sub {
     8             width: 100px;
     9             height: 100px;
    10             background-color: red;
    11             position: absolute;
    12             left: 50px;
    13             top: 50px;
    14         }
    15         .sup {
    16             width: 200px;
    17             height: 200px;
    18             background-color: orange;
    19             position: relative;
    20             /*position: absolute;
    21             top: 50px;
    22             left: 100px;*/
    23             margin: 50px auto;
    24         }
    25         body {
    26             border: 1px solid black;
    27         }
    28     </style>
    29 </head>
    30 <body>
    31     <div class="sup">
    32         <div class="sub"></div>
    33     </div>
    34 </body>
    35 <script type="text/javascript">
    36     var sub = document.querySelector('.sub');
    37     var sup = document.querySelector('.sup');
    38     var body = document.querySelector('body');
    39 
    40     // 冒泡: 父子级拥有同一的事件,在子级区域触发子级事件,父级也能捕获并响应
    41     sub.onclick = function (ev) {
    42         ev.stopPropagation();
    43         console.log("sub click");
    44     }
    45     sup.onclick = function (ev) {
    46         ev.cancelBubble = true;
    47         console.log("sup click");
    48     }
    49     body.onclick = function (ev) {
    50         // 事件的兼容
    51         // ev = ev | event;
    52 
    53         // 点击传过来的是 MouseEvent,存储着鼠标触发事件的一系列信息
    54         console.log(ev);
    55         console.log("body click");
    56     }
    57 
    58 
    59     // 默认事件: 鼠标右键 oncontextmenu
    60     sub.oncontextmenu = function (ev) {
    61         // ev.preventDefault();
    62         console.log("sub menu click");
    63     }
    64 
    65     // 父级取消了默认事件,子级都被取消掉了
    66     body.oncontextmenu = function (ev) {
    67         console.log("body menu click");
    68         return false;
    69     }
    70 
    71 </script>
    72 </html>
    冒泡和默认事件

      鼠标事件

      学习要点:事件参数 event (存放事件信息的回调参数)

       onclick:鼠标点击

       ondblclick:鼠标双击

       onmousedown:鼠标按下

       onmousemove:鼠标移动

       onmouseup:鼠标抬起

       onmouseenter(or)onmouseover:鼠标悬浮

       onmouseout (or)onmouseleave:鼠标移开

       oncontextmenu:鼠标右键

    注:有些事件会相互冲突,可以一个一个来试验

        鼠标事件ev反馈的鼠标点

      1  移动: ev.clientX | ev.clientY 相对于页面原点(左上角)

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>鼠标事件</title>
     6     <style type="text/css">
     7         .div {
     8             width: 200px;
     9             height: 200px;
    10             background-color: orange;
    11             margin: 50px auto;
    12         }
    13     </style>
    14 </head>
    15 <body>
    16     <div class="div"></div>
    17 </body>
    18 <script type="text/javascript">
    19     var div = document.querySelector('.div');
    20 
    21     // 单击
    22     div.onlick = function () {
    23         console.log("双击了");
    24     }
    25 
    26     // 双击
    27     div.ondblclick = function () {
    28         console.log("双击了");
    29     }
    30 
    31     // 鼠标按下
    32     div.onmousedown = function () {
    33         console.log("按下");
    34     }
    35 
    36     // 鼠标移动
    37     div.onmousemove = function (ev) {
    38         // 鼠标在页面中的位置
    39         console.log("x的坐标:", ev.clientX);
    40         console.log("y的坐标:", ev.clientY);
    41         console.log("移动");
    42     }
    43 
    44     // 鼠标抬起
    45     div.onmouseup = function () {
    46         console.log("抬起");
    47     }
    48     
    49     //悬浮
    50     div.onmosueover = function () {
    51         console.log("悬浮");
    52     }
    53 
    54     //移开
    55     div.onmouseout = function () {
    56         console.log("移开");
    57     }
    58 
    59     //右键
    60     div.oncontextmenu = function () {
    61         console.log("右键");
    62     }
    63 
    64 
    65 </script>
    66 </html>
    鼠标事件

      键盘事件

       onkeydown:键盘按下

       onkeyup:键盘抬起

      1)事件参数ev

       1  ev.keyCode:按键编号   //  37(左)  38(上)  39(右)  40(下) 

       2  ev.altkey:alt特殊按键   //  18

       3  ev.ctrlkey:ctrl特殊按键  //  17

       4  ev.shiftkey:shift特殊按键  //  16

          //  自定义按键(比如说ctrl + c 和 ctrl + v 复制粘贴等):

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>键盘事件</title>
     6     <style type="text/css">
     7         .div {
     8             width: 200px;
     9             height: 200px;
    10             background-color: yellow;
    11             /*margin: 50px auto;*/
    12             /*定位来做键盘移动方式*/
    13             position: absolute;
    14             top: 0;
    15             left: 100px;
    16         }
    17     </style>
    18 </head>
    19 <body>
    20     <div class="div"></div>
    21 </body>
    22 <script type="text/javascript">
    23     var div = document.querySelector('.div');
    24     // 操作一般标签,键盘事件绑定给文档 document
    25     // 表单标签(可以录入文本),键盘事件绑定给表单标签
    26     document.onkeydown = function(ev) {
    27         // 当在页面点击方向或特殊按键时会在控制台显示对应的数字
    28         // console.log(ev.keyCode);
    29         //移动
    30         switch(ev.keyCode) {
    31             // offsetLeft 盒模型 结合绝对定位来使用 获取之前的距左距离
    32             case 37: 
    33                 console.log("");
    34                 div.style.left = div.offsetLeft - 3 + "px";
    35                 break;
    36             case 38: 
    37                 console.log("");
    38                 div.style.top = div.offsetTop - 3 + "px";
    39                 break;
    40             case 39: 
    41                 console.log("");
    42                 div.style.left = div.offsetLeft + 3 + "px";
    43                 break;
    44             case 40: 
    45                 console.log("");
    46                 div.style.top = div.offsetTop + 3 + "px";
    47             break;
    48         }
    49     }
    50 </script>
    51 </html>
    键盘事件
  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/zedong/p/9810566.html
Copyright © 2011-2022 走看看