07_事件_BOM_定时器_特效(DOM加强)

07_事件_BOM_定时器_特效(DOM加强),第1张

概述复习: 事件绑定的三种方式:        事件: 绑定事件的区别:   为元素解绑事件: 第一种解绑的方式:         第二种解绑的方式:     第三种解绑的方式:               绑定事件和 解绑事件的兼容代码: 1 //绑定事件 和 取消绑定的 兼容代码: 2 function addEventListener(ele, type, fn) { 3 if 复习: 事件绑定的三种方式: 

 

 

 

事件: 绑定事件的区别:

 

为元素解绑事件:

第一种解绑的方式:

 

 

 

 

第二种解绑的方式:

 

 

第三种解绑的方式:

 

 

 

 

 

 

 

绑定事件和 解绑事件的兼容代码:

 1 //绑定事件 和 取消绑定的 兼容代码: 2 function addEventListener(ele,type,fn) { 3     if(ele.addEventListener){ 4         ele.addEventListener(type,fn,false); 5     }else if(ele.attachEvent){ 6         ele.attachEvent("on"+type,fn); 7     }else{ 8         ele["on"+type] = fn; 9     }10 }11 12 function removeEventListener(ele,fn) {13     if(ele.removeEventListener){14         ele.removeEventListener(type,false);15     }else if(ele.detachEvent){16         ele.detachEvent("on"+type,fn);17     }else{18         ele["on"+type] =null;19     }20 }
VIEw Code

 

到目前为止,common.Js 的代码如下:

@H_404_293@

 1 /** 2  * 根据ID 或者根据tagname 返回相应的元素 3  * */ 4 function getID$(ID){ 5    return document.getElementByID(ID); 6 } 7 function getTags$(tagname) { 8     return document.getElementsByTagname(tagname) 9 }10 11 //绑定事件 和 取消绑定的 兼容代码:12 function addEventListener(ele,fn) {13     if(ele.addEventListener){14         ele.addEventListener(type,false);15     }else if(ele.attachEvent){16         ele.attachEvent("on"+type,fn);17     }else{18         ele["on"+type] = fn;19     }20 }21 22 function removeEventListener(ele,fn) {23     if(ele.removeEventListener){24         ele.removeEventListener(type,false);25     }else if(ele.detachEvent){26         ele.detachEvent("on"+type,fn);27     }else{28         ele["on"+type] =null;29     }30 }
common.Js

 

事件冒泡:

 

 

 1 <!DOCTYPE> 2 <HTML lang="en"> 3     <head> 4         <Meta charset="UTF-8"> 5         <Title>这是网页标题</Title> 6         <style> 7             #dv1{ 8                 wIDth: 300px; 9                 height: 300px;10                 background-color: cyan;11             }12             #dv2{13                 wIDth: 200px;14                 height: 200px;15                 background-color: red;16             }17             #dv3{18                 wIDth: 100px;19                 height: 100px;20                 background-color: green;21             }22         </style>23     </head>24     <body>25         <div ID="dv1">26             <div ID="dv2">27                 <div ID="dv3"></div>28             </div>29         </div>30         <script src="Js/common.Js"></script>31         <script>32             getID$("dv1").onclick = function () {33                 console.log(this.ID); 34             };35             getID$("dv2").onclick = function () {36                 console.log(this.ID); 37             };38             getID$("dv3").onclick = function () {39                 console.log(this.ID); 40             };41         </script>42     </body>43 </HTML>
事件冒泡示例

事件冒泡有很大的坏处,一般,我们都是组织事件冒泡的。

 

阻止事件冒泡:

 

 

 

 

 

事件的阶段:

1,事件捕获阶段(1代表) :从外到里

2,事件目标阶段(2代表)

3,事件冒泡阶段  (3代表):从里到外

 1 <!DOCTYPE> 2 <HTML lang="en"> 3     <head> 4         <Meta charset="UTF-8"> 5         <Title>这是网页标题</Title> 6         <style> 7             #dv1{ 8                 wIDth: 300px; 9                 height: 300px;10                 background-color: cyan;11             }12             #dv2{13                 wIDth: 200px;14                 height: 200px;15                 background-color: red;16             }17             #dv3{18                 wIDth: 100px;19                 height: 100px;20                 background-color: green;21             }22         </style>23     </head>24     <body>25         <div ID="dv1">26             <div ID="dv2">27                 <div ID="dv3"></div>28             </div>29         </div>30         <script src="Js/common.Js"></script>31         <script>32             var obJs = [getID$("dv1"),getID$("dv2"),getID$("dv3")];33             // obJs.forEach(function (ele,IDx,arr) {34             //     console.log("1 "+ele);35             //     console.log("2 "+IDx);36             //     console.log("3 "+arr);37             // })38             obJs.forEach(function (ele) {39                 //为每个元素注册事件40                 ele.addEventListener("click",function () {41                     console.log(this.ID);42                 },false); //如果false 改为ture 就是事件的捕获阶段。 43             })44         </script>45     </body>46 </HTML>
vIEw code

 

查看具体事件的阶段可以通过属性来查看,它在事件处理函数中的参数中 evt.eventPhase .

 1 <!DOCTYPE> 2 <HTML lang="en"> 3     <head> 4         <Meta charset="UTF-8"> 5         <Title>这是网页标题</Title> 6         <style> 7             #dv1{ 8                 wIDth: 300px; 9                 height: 300px;10                 background-color: cyan;11             }12             #dv2{13                 wIDth: 200px;14                 height: 200px;15                 background-color: red;16             }17             #dv3{18                 wIDth: 100px;19                 height: 100px;20                 background-color: green;21             }22         </style>23     </head>24     <body>25         <div ID="dv1">26             <div ID="dv2">27                 <div ID="dv3"></div>28             </div>29         </div>30         <script src="Js/common.Js"></script>31         <script>32             var obJs = [getID$("dv1"),function (evt) {41                     console.log(this.ID);42                     console.log("当前的事件阶段是 "+evt.eventPhase);43                 },false); //如果false 改为ture 就是事件的捕获阶段。44             })45         </script>46     </body>47 </HTML>
VIEw Code

注意: 事件的捕获阶段是不可能和冒泡阶段同时出现的。

 

要么是目标 ->  冒泡  

要么是捕获 ->  目标  

 

第三个参数如果是false 则是冒泡,如果是true  则是捕获阶段。

 

事件的总结:

 

 

 

 

为同一个元素注册多个不同的事件  并用同一个事件处理函数:

 1 <!DOCTYPE> 2 <HTML lang="en"> 3     <head> 4         <Meta charset="UTF-8"> 5         <Title>这是网页标题</Title> 6  7     </head> 8     <body> 9         <input type="button" value="按钮" ID="btn">10 11         <script src="Js/common.Js"></script>12         <script>13             //为同一个元素绑定 多个不同的事件  ,并用同一个事件处理函数处理14             getID$("btn").onclick = f1;15             getID$("btn").onmouseenter = f1;16             getID$("btn").onmouseleave = f1;17             function f1(evt) {18                 switch (evt.type) {19                     case "click": alert("鼠标点击了"); break;20                     case "mouseenter": this.style.backgroundcolor="cyan"; break;21                     case "mouseleave": this.style.backgroundcolor =""; break;22                 }23             }24         </script>25     </body>26 </HTML> 
为同一个元素绑定 多个不同的事件 ,并用同一个事件处理函数处理

 

案例搜索引擎项目(只能提示功能实现): 总结

以上是内存溢出为你收集整理的07_事件_BOM_定时器_特效(DOM加强)全部内容,希望文章能够帮你解决07_事件_BOM_定时器_特效(DOM加强)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1029046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存