`

javaScript对冒泡做一些分析与测试

阅读更多
<script src="js/冒泡.js"></script>



<script type=text/javascript>
	
</script>

<style>
	body{
		margin:0px;
		padding:0px;
		}
	#div1{
		width:300px;
		height:200px;
		background:#CC3;
		margin:30px auto 0px 10px;
		position:relative;
		}
	#div2{
		width:300px;
		height:200px;
		background:#096;
		position:absolute;
		left:310px;
	}
	#div11{
		margin-left:10px;
		}	
</style>

</head>
<body id='obody'>
	<div id='div1' class='div1'>
    	xxxxxx
        <div id='div11' class='div1'>fasdfa</div>
    </div>
	<div id='div2' class='div1'>
    
    </div>
    <div id='div3' class='div1'  style="width:200px">
    	<div id='div31' class='div1'></div>
    </div>

</body>

 

 

//冒泡
//若有结构如body--div1--div11  冒泡就是从div11--div1--body每一个节点都会触发事件
//来一例子
window.onload=function(){
		/*
		document.getElementById('obody').onclick=function(evt){
				var e=evt||winow.event;
				console.info("返回触发此事件的元素: "+e.target+" "+"返回其事件监听器触发该事件的元素: "+e.currentTarget);
				console.info("返回触发此事件的元素id: "+e.target.id+" "+"返回其事件监听器触发该事件的元素id: "+e.currentTarget.id);
				
				//结果对比下
				//返回触发此事件的元素: [object HTMLDivElement] 返回其事件监听器触发该事件的元素: [object HTMLBodyElement]
				//冒泡.js:9 返回触发此事件的元素id: div1 返回其事件监听器触发该事件的元素id: obody
				//冒泡.js:8 返回触发此事件的元素: [object HTMLDivElement] 返回其事件监听器触发该事件的元素: [object HTMLBodyElement]
				//冒泡.js:9 返回触发此事件的元素id: div11 返回其事件监听器触发该事件的元素id: obody
			};
			*/
		//由冒泡特性,如果我对body--div1--div三个节点分别添加了事件,根据其特性可知,点了div11,他的事件会触发,div1也会,当然包括body了
		//所以有个要解决的问题就是,点了div11就触发div11的事件,
		//解决方案有两种,一种不让它向上冒泡,第二种就是代理了,第一种是有缺点的
		
		//第一种
		
		
		document.getElementById('obody').onclick=function(evt){
				var e=evt||winow.event;
				console.info("谢谢光顾body");
			};
		document.getElementById('div11').onclick=function(evt){
				var e=evt||winow.event;
				console.info("谢谢光顾div11");
				e.stopPropagation();
				//换一种不行
				//e.preventDefault();//通知浏览器不要执行与事件关联的默认动作
				//事件传播和默认操作是二个不同的机制,  
    			//一个是向上冒泡 一个是执行默认操作  
			};
			
			
			//测试结果ok
		//第二种
		//为了正常的向上冒泡,那就用代理吧(听起来可怕,实现起来很简单)
		
		/*
		document.getElementById('obody').onclick=function(evt){
				var e=evt||winow.event;
				if(e.target.id=='div11'){
						console.info("谢谢光顾div11");
					}else if(e.target.id=='obody'){
							console.info("谢谢光顾body");
						}
			};
			*/
	};

    //到此结束

分享到:
评论

相关推荐

    C# jQuery冒泡排序分析和理解(初级和基础)

    冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻元素并交换位置,使得每...在实际开发中,还可以考虑优化冒泡排序算法,如添加标志位来检测数组是否已排序,以及采用双向冒泡排序等方法提高效率。

    JavaScript上机实验题

    #### 五、JavaScript的应用与实践 ##### 实验目的 1. **综合应用能力提升**: 综合运用以上学到的知识点完成更复杂的任务。 ##### 实验内容分析 1. **个人信息表单**: - 设计表单收集用户的个人信息,包括姓名、...

    高性能JavaScript 2015

    9. **性能工具**:介绍如何利用Chrome DevTools和其他性能分析工具进行性能测试和调试,以及如何解读性能报告。 10. **最佳实践与案例研究**:通过实际案例,展示如何将这些理论应用到项目中,提高代码质量和运行...

    [高性能JavaScript编程].(High.Performance.JavaScript).Nicholas.C.Zakas.中英对照版.pdf

    11. **调试和测试**:提供JavaScript性能测试和调试的工具和技巧,帮助开发者识别和修复性能问题。 12. **源码分析**:通过实例分析JavaScript库和框架的源码,揭示其中的性能优化策略。 这本书对于想要提升...

    用JavaScript刷LeetCodeOJ解题报告合集

    通过分析这些解题报告,你可以学到以下JavaScript相关的知识点: 1. **基本语法**:包括变量声明(var、let、const)、作用域、函数定义、数组操作、对象字面量等基础概念。 2. **数据结构**:如数组、链表、栈、...

    Javascript技术文档

    此外,JavaScript中的对象是键值对的集合,可以用来表示复杂的数据结构。了解如何创建和操作对象,包括属性和方法,是进阶学习的关键。 三、DOM操作 DOM(Document Object Model)是HTML和XML文档的结构化表示,...

    五个javascript小游戏

    通过分析这些JavaScript小游戏,你可以深入了解如何运用上述知识点构建互动的网页应用。每个游戏都可能包含独特的设计和实现,提供了一个实践和学习JavaScript的好机会。无论你是初学者还是经验丰富的开发者,都能...

    JavaScript权威指南(第5版)中文版.pdf

    - **调试与测试技巧**:提供实用的调试工具和测试策略,帮助开发者定位问题并确保代码质量。 ### 小结 《JavaScript权威指南》(第5版)不仅仅是一本介绍JavaScript基础知识的书籍,它还涵盖了大量高级主题和技术...

    JavaScript Programmer_s Reference.pdf

    2. **事件绑定与监听**:详解事件流机制,包括冒泡阶段和捕获阶段,掌握常见事件类型及其触发方式。 3. **动态内容更新**:通过AJAX技术实现异步加载数据,保持页面交互性的同时避免刷新带来的用户体验下降。 #### ...

    Advanced JavaScript

    《函数与变量作用域》章节,深入分析了JavaScript中函数的细节以及作用域规则。这可能包括: - 函数声明与表达式的区别。 - 闭包的原理与应用。 - 变量的作用域链。 - 非局部变量的访问机制。 ### 六、利用...

    JavaScript 高级程序设计高级程序设计_高清完美版

    - **User Agent字符串**:通过分析浏览器发送的User Agent字符串来检测浏览器类型。 - **Feature Detection**:通过实际测试浏览器功能来判断是否支持某项技术,这是一种更加可靠的方法。 #### 十、正则表达式 - *...

    《JavaScript王者归来》光盘源代码

    《JavaScript王者归来》是一部深入探讨JavaScript编程...在阅读和实践这些源代码时,建议结合书中的讲解逐步分析,以确保对每个示例都有透彻的理解。同时,也可以通过修改和扩展源代码来提升自己的编程技巧和创新能力。

    Flash冒泡 冒出水滴的动画效果.rar

    在本文中,我们将深入探讨如何使用Flash创建一个冒泡效果,以及如何将这种...尽管现代网页设计倾向于使用更现代的技术,如JavaScript库和WebGL,但理解并掌握Flash动画的制作技巧仍对提升设计师的综合能力大有裨益。

    javaScript从入门到精通

    JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的编程语言,主要负责实现客户端的动态效果和交互功能。它的语法与Java有相似之处,但两者并非同一语言。本指南将带你从零开始,逐步深入理解JavaScript的...

    JAVASCRIPT 技术经典再学习

    10. **调试与测试**:掌握使用开发者工具进行调试,设置断点、查看调用栈、分析性能等技巧,以及编写单元测试和集成测试,确保代码的正确性和稳定性。 通过"JAVASCRIPT 技术经典再学习",我们可以深入理解...

    javascript for web developer

    - **测试与调试**:讨论单元测试、集成测试的重要性,以及如何使用浏览器开发者工具进行调试。 #### 结论 《Professional JavaScript™ for Web Developers》是一本全面覆盖JavaScript核心技术和最佳实践的书籍,...

    JavaScript Novice to NINJA

    10. 测试JavaScript代码:介绍单元测试和集成测试,以及测试框架如Jest或Mocha的使用。 11. 高级JavaScript概念:探讨原型链、作用域和上下文、垃圾回收机制等。 12. 前端框架介绍:概述前端流行框架如React、Vue....

    JavaScript的调试与优化.flv

    6. **内存检测**:内存泄漏是JavaScript中常见的问题,通过内存分析工具可以检测是否存在未释放的对象,从而导致内存占用持续增长。 7. **源码映射**:在处理压缩或编译后的代码时,源码映射文件(source map)可以...

Global site tag (gtag.js) - Google Analytics