fengchuanyu hace 1 día
padre
commit
cd5064b81f
Se han modificado 2 ficheros con 110 adiciones y 0 borrados
  1. 78 0
      4_BOM&DOM/21_DOM_事件机制.html
  2. 32 0
      4_BOM&DOM/22_DOM事件委托.html

+ 78 - 0
4_BOM&DOM/21_DOM_事件机制.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <style>
+        .box1{
+            width: 600px;
+            height: 600px;
+            background-color: blue;
+        }
+        .box2{
+            width: 400px;
+            height: 400px;
+            background-color: red;
+        }
+        .box3{
+            width: 200px;
+            height: 200px;
+            background-color: green;
+        }
+    </style>
+</head>
+<body>
+    <div class="box1">
+        <div class="box2">
+            <div class="box3"></div>
+        </div>
+    </div>
+    <script>
+        var oBox1 = document.getElementsByClassName("box1")[0];
+        var oBox2 = document.getElementsByClassName("box2")[0];
+        var oBox3 = document.getElementsByClassName("box3")[0];
+
+        // 事件冒泡 如果多层级元素同时绑定事件那么最内层元素触发事件 事件顺序会由内向外逐层触发
+        // oBox1.onclick = function(){
+        //     console.log("box1");
+        // }
+        // oBox2.onclick = function(){
+        //     console.log("box2");
+        // }
+        // oBox3.onclick = function(){
+        //     console.log("box3");
+        // }
+
+
+        oBox1.addEventListener("click",function(){
+            console.log("box1");
+
+        })
+        oBox2.addEventListener("click",function(){
+            console.log("box2");
+        })
+        oBox3.addEventListener("click",function(event){
+            console.log("box3");
+            // 阻止事件冒泡
+            event.stopPropagation();
+        })
+
+
+        // addEventListener 第三个参数为布尔值 默认值为false事件冒泡 true为事件捕获
+        // 事件捕获 事件触发顺序是由外向内
+        // oBox1.addEventListener("click",function(){
+        //     console.log("box1");
+        // },true)
+        // oBox2.addEventListener("click",function(){
+        //     console.log("box2");
+        // },true)
+        // oBox3.addEventListener("click",function(){
+        //     console.log("box3");
+        // },true)
+
+        // 如果同时触发捕获和冒泡那么会先处理捕获事件然后处理冒泡事件
+        
+    </script>
+</body>
+</html>

+ 32 - 0
4_BOM&DOM/22_DOM事件委托.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <ul>
+        <li>hello world</li>
+    </ul>
+    <button>add</button>
+    <script>
+        var oBtn = document.getElementsByTagName("button")[0];
+        var oUl = document.getElementsByTagName("ul")[0];
+        var oLi = document.getElementsByTagName("li")[0];
+        oBtn.onclick = function(){
+            var newLi = document.createElement("li");
+            oUl.append(newLi);
+        }
+        oUl.onclick = function(evnet){
+            // console.log(evnet)
+            // event.target 基于事件冒泡 可以捕捉到具体内部哪一个元素触发的事件
+            // 事件委托 将内部元素的事件委托给父元素进行处理
+            console.log(evnet.target);
+        }
+        oLi.onclick = function(event){
+            console.log("li")
+        }
+    </script>
+</body>
+</html>