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>

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

posted @ 2021-08-12 21:51  Jasper2003  阅读(33)  评论(0编辑  收藏  举报