Chrome中捕获和冒泡的demo
程序员文章站
2022-07-14 09:30:07
...
一言以蔽之,曰:“先捕获,后冒泡!”
该代码只适合于有addEventListener方法的浏览器,没有做判断和容错,使用方法为:拷贝代码并保存为xxx.html,用浏览器运行,点击中间的click me,于是有了一个动画效果,很粗糙,只为了庆祝程序员节。
该代码只适合于有addEventListener方法的浏览器,没有做判断和容错,使用方法为:拷贝代码并保存为xxx.html,用浏览器运行,点击中间的click me,于是有了一个动画效果,很粗糙,只为了庆祝程序员节。
<!DOCTYPE html> <html> <head> <title>Capture & Bubble</title> <style type="text/css"> div { float: left;border: 1px solid #CCC;padding: 30px;background-color: #FFF; text-align: center; vertical-align: middle;} </style> </head> <body> <div> <div> <div> <div> <div style="width:100px; height:100px; line-height: 100px; cursor:pointer;">Click Me</div> </div> </div> </div> </div> <script type="text/javascript"> var divList = document.getElementsByTagName('div'); var timer = 0; for (var i = 0, len = divList.length; i < len; i ++) { (function(j) { var divNode = divList[j]; var changeBg = function(type) { if (!divNode.getAttribute('hasClicked')) { divNode.setAttribute('hasClicked', 0); } var hasClicked = divNode.getAttribute('hasClicked') - 0; if (hasClicked <= 2) { hasClicked ++; divNode.setAttribute('hasClicked', hasClicked); timer ++; if (hasClicked == 1) { window.setTimeout(function() { divNode.style.backgroundColor = '#444'; console.log(type); }, timer * 1000); } else { window.setTimeout(function() { divNode.style.backgroundColor = '#FFF'; divNode.setAttribute('hasClicked', 0); console.log(type); }, timer * 1000); } } }; divNode.addEventListener('click', function(e) { // capture changeBg('capture'); }, true); divNode.addEventListener('click', function(e) { // bubble changeBg('bubble'); }, false); })(i); } </script> </body> </html>
上一篇: 分享简单理解java冒泡排序的算法
下一篇: js事件捕获冒泡
推荐阅读
-
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
-
shell中的数组操作小结和冒泡排序实现脚本分享
-
正则表达式中的捕获和反向引用笔记
-
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
-
javascript 中事件冒泡和事件捕获机制的详解
-
JavaScript中数组的选择排序和冒泡排序
-
一直分不清选择排序和冒泡排序,网上也好多都是模棱两可的,按自己的理解,总结了个小demo以作记录,希望批评指正
-
Chrome中捕获和冒泡的demo
-
[JavaScript]Array.sort对数字排序在Chrome、Firefox和Edge中的差异
-
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法