• JavaScript:事件


    js捕获某个动作而做出的反馈

    HTML 事件的例子:

      当用户点击鼠标时

      当网页已加载时

      当图片已加载时

      当鼠标移动到元素上时

      当输入字段被改变时

      当 HTML 表单被提交时

      当用户触发按键时

    1 窗口事件 (Window Events)

    仅在 body 和 frameset 元素中有效。

      onload 当文档被载入时执行脚本

      

    <body onload="test()">
        <script>
            function test() {
                document.write("哈哈哈哈");
            }
        </script>
    </body>

    2 表单元素事件 (Form Element Events)

    仅在表单元素中有效。

      onblur 当元素失去焦点时执行脚本

      onfocus 当元素获得焦点时执行脚本  

    <body>
        <script>
            function a() {
                console.log("获得焦点==被激活");
            }
            function b() {
                console.log("失去焦点");
            }
        </script>
    
        <form action="">
            <p>帐号:<input onfocus="a()" onblur="b()" /></p>
            <p>密码:<input /></p>
        </form>
    </body>

     

    3 鼠标事件 (Mouse Events)

      onclick 当鼠标被单击时执行脚本

      ondblclick 当鼠标被双击时执行脚本

      onmouseout 当鼠标指针移出某元素时执行脚本

      onmouseover 当鼠标指针悬停于某元素之上时执行脚本

    <style>
        img{
            width: 30%;
            border: 5px solid white;
        }
    </style>
    
    <body>
        <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)"
    onclick="dan()">
        <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)"
    ondblclick="shuang()">
        <img src="img/logo.png" onmouseover="shang(this)" onmouseout="xia(this)" >
    
        <script>
            function dan(){
                alert("点了一下");
            }
    
            function shuang(){
                alert("连续快读点两下");
            }
    
            function shang(img){
                img.style.border = "5px solid red";
            }
    
            function xia(img){
                img.style.border = "5px solid white";
            }
        </script>
    </body>

    4 键盘事件

      onkeydown 按下去

      onkeyup 弹上来

    <script>
        window.onkeydown = function(){
            // event:事件源(按键)
            // console.log( "按键编码:"+event.keyCode );
            if(event.keyCode == "13"){ // 回车键
                alert("登录成功!");
            }
        }
    
        window.onkeyup = function(){
            console.log(event.keyCode); // 按住按键不松手是不会触发的。当松手时,按键回弹则触发
        }
    </script>

    5 事件冒泡

      创建两个div,一个大一些,一个小一些

    <style>
        #father {
            width: 200px;
            height: 200px;
            background: black;
            padding: 10px;
        }
    
        #child {
            width: 100px;
            height: 100px;
            background: greenyellow;
        }
    </style>
    
    <body>
        <div id="father">
            <div id="child"></div>
        </div>
    
        <script>
        // 代码不重要,重要是知道这个事件发生,是正常现象
    
        document.getElementById("father").addEventListener("click", function() {
            alert("父级元素的事件被触发:" + this.id);
        });
    
        document.getElementById("child").addEventListener("click", function(e) {
            e.stopPropagation() //取消事件的冒泡机制
            alert("子级元素的事件被触发:" + this.id);
        });
        </script>
    </body>

    先子,后父。事件的触发顺序*自内向外*,这就是事件冒泡;

    6 事件捕获

      还是刚才创建两个div,一个大一些,一个小一些

    <style>
        #father {
            width: 200px;
            height: 200px;
            background: black;
            padding: 10px;
        }
    
        #child {
            width: 100px;
            height: 100px;
            background: greenyellow;
        }
    </style>
    
    <body>
        <div id="father">
            <div id="child"></div>
        </div>
    
      <script>

    document.getElementById("father").addEventListener("click",function(){ alert("父级:" + this.id); },true);
       document.getElementById(
    "child").addEventListener("click",function(){ alert("子级:" + this.id); },true); </script>

    </body>

    先父,后子。事件触发顺序变更为*自外向内*,这就是事件捕获;

  • 相关阅读:
    JSON
    event flow
    for,for each,for in,for of
    history of program language
    px fr em rem
    正则符号
    DOM、BOM
    web布局
    grid
    初学python环境安装
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15135059.html
Copyright © 2020-2023  润新知