主页 > 互联网  > 

【JavascriptDay17】事件传播、事件对象

【JavascriptDay17】事件传播、事件对象
事件传播 <div style="background-color: rgba(0, 0, 255, 0.5);">         <div style="background-color: rgba(255, 0, 0, 0.5);margin: 50px;">asdasd</div>     </div>     <!-- 事件传播,子元素被触发的事件,会基于标签结构向父元素传递,                  并让父元素也触发对应的事件      -->     <div class="box" onclick="fun1()">         <div class="box">             <div class="box">                 <div class="box" onclick="fun2()"></div>             </div>         </div>     </div>     <script>         function fun1(){             console.log(1);         }         function fun2(){             console.log(2);         }     </script>     <hr>     <!--          事件传播过程中的事件回调执行分为两种执行             1. 冒泡:由子元素向父元素顺序,依次触发事件                     默认事件回调的执行规则,元素的属性事件绑定只会触发冒泡规则             2. 捕获:由父元素向子元素顺序,依次触发事件                     元素只有通过 addEventListener("事件名",回调方法,true); 捕获绑定     -->     <div class="box" onclick="printName('div1')">div1         <div class="box" onclick="printName('div2')">div2             <div class="box" onclick="printName('div3')">div3                 <div class="box" onclick="printName('div4')">div4</div>             </div>         </div>     </div>     <script>         function printName(arg){             console.log(arg);         }     </script>     <hr>     <div class="box a">div1         <div class="box a">div2             <div class="box a">div3                 <div class="box a">div4</div>             </div>         </div>     </div>     <script>         var boxAList = document.querySelectorAll(".a");         for (let i = 0; i < boxAList.length; i++) {             boxAList[i].addEventListener("click",function(){                 console.log("div"+(i+1));                              },true)         }     </script>     <hr>     <!-- 当父子元素事件绑定时,同时存在捕获和冒泡。优先执行捕获 -->     <div class="box b">div0-捕获         <div class="box b">div1-冒泡             <div class="box b">div2-捕获                 <div class="box b">div3-冒泡</div>             </div>         </div>     </div>     <script>         var boxAList = document.querySelectorAll(".b");         for (let i = 0; i < boxAList.length; i++) {             boxAList[i].addEventListener("click",function(){                 console.log("div"+i);             },i%2==0);             // i%2==0 true 捕获             // i%2==0 false 冒泡         }     </script> 事件对象 <!--         事件对象参数:记录事件触发时对应的相关信息             + 标签属性方式完成事件绑定时,可以为方法提供一个全局关键字 event               event关键字用于指代当前方法触发时(瞬时参数)的相关信息对象     -->     <!-- abc 是JS的全局变量,如果abc不存在,会报 abc is not defined -->     <input type="button" value="点击(左键按下并松开)" onclick="printEventA('参数',abc,event)">     <input type="button" value="鼠标左键单击" onmousedown="printEventA('参数',abc,event)">     <script>         var abc = "全局变量";         function printEventA(arg,arg1,e){             console.log("click",arg,arg1);             console.log("事件对象:",e);             console.log("事件类型:",e.type );             console.log("事件触发对象:",e.target );             console.log("事件的绑定对象:",e.currentTarget);             console.log("鼠标事件对应指针坐标",e.x,e.y);         }     </script>     <hr>     <div class="box" onclick="printEventB(event,'outDiv')">         <!-- <div class="box" onclick="printEventB(event,'inDiv')"></div> -->         <div class="box"></div>     </div>     <script>         function printEventB(e,name){             // console.log(name,"==========>");             // console.log("target",e.target);             // console.log("currentTarget",e.currentTarget);             // console.log("<===========",name);             console.log(name);             // 只有元素自身被点击时才会触发下述功能的调用 => 绑定的事件功能只有元素自己可以触发             if( e.target===e.currentTarget ){                 console.log(name,"==========>");                 console.log("target",e.target);                 console.log("currentTarget",e.currentTarget);                 console.log("<===========",name);             }         }     </script>

标签:

【JavascriptDay17】事件传播、事件对象由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【JavascriptDay17】事件传播、事件对象