当前位置: 首页 > news >正文

【前端】JavaScript入门及实战111-115

文章目录

  • 111 事件对象
  • 112 div跟随鼠标移动
  • 113 冒泡
  • 114 事件的委派
  • 115 事件的绑定

111 事件对象

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#areaDiv {border: 1px solid black;width: 300px;height: 50px;margin-bottom: 10px;}#showMsg {border: 1px solid black;width: 300px;height: 20px;}</style><script type="text/javascript">	window.onload = function(){/*当鼠标在areaDiv中移动时,在showMsg中来显示鼠标的坐标*/// 获取两个divvar areaDiv = document.getElementById("areaDiv");var showMsg = document.getElementById("showMsg");/*onmousemove:该事件将会在鼠标在元素中移动时触发事件对象:当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标,键盘按下哪个按键*/areaDiv.onmousemove = function(event){/*在IE8中,响应函数被触发时,浏览器不会传递事件对象,在IE8及以下的浏览器中,是将事件对象作为window对象的属性保存的*//*if(!event){event = window.event;}*/// 解决事件对象的兼容性问题event = event || window.event;/*clientX可以获取鼠标指针的水平坐标clientY可以获取鼠标指针的垂直坐标*/var x = event.clientX;var y = event.clientY;// 在showMsg中显示鼠标的坐标showMsg.innerHTML = "x = " + x + ",y = " + y;};	};</script>	
</head>
<body><div id="areaDiv"></div><div id="showMsg"></div>
</body>
</html>

112 div跟随鼠标移动

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1{width: 100px;height: 100px;background-color: red;<!--开启绝对定位才能使用偏移量-->position: absolute;}</style><script type="text/javascript">	window.onload = function(){/*使div可以跟随鼠标移动*/			// 获取box1var box1 = document.getElementById("box1");// 绑定鼠标移动事件document.onmousemove = function(event){// 浏览器兼容问题event = event || window.event// 获取滚动条滚动的距离/*chrome认为浏览器滚动条是body的,可以通过body.scrollTop来获取火狐等浏览器认为浏览器的滚动条是html的*///var st = document.body.scrollTop;//var st = document.documentElement.scrollTop;var st = document.body.scrollTop || document.documentElement.scrollTop;var sl = document.body.scrollLeft || document.documentElement.scrollLeft;// 获取到鼠标的坐标/*clientX和clientY用于获取鼠标在当前可见窗口的坐标div的偏移量,是相对于整个页面的pageX和pageY可以获取鼠标相对于当前页面的坐标但是这两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用*/var left = event.clientX;var top = event.clientY;//var left = event.pageX;//var top = event.pageY;// 设置div的偏移量box1.style.left = left + sl + "px";box1.style.top = top + st + "px";}var box2 = document.getElementById("box2");box2.onmousemove = function(event){event = event || window.event;event.cancelBubble = true;};};</script>	
</head>
<body style="height: 1000px; width: 2000px;"><div id="box2" style="height: 500px; width: 500px; background-color: #bfa;"></div><div id="box1"></div>
</body>
</html>

113 冒泡

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1 {width: 200px;height: 200px;background-color: yellowgreen;}#s1 {background-color: yellow;}</style><script type="text/javascript">	window.onload = function(){/*事件的冒泡(Bubble)所谓的冒泡就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发。在开发中大部分情况都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡*/// 为s1绑定一个单击响应函数var s1 = document.getElementById(s1);s1.onclick = function(event){event = event || window.event;alert("我是span的单击响应函数");// 取消冒泡// 可以将事件对象的cancelBubble设置为true,即可取消冒泡event.cancelBubble = true;};// 为box1绑定一个单击响应函数var box1 = document.getElementById(box1);box1.onclick = function(event){event = event || window.event;alert("我是div的单击响应函数");event.cancelBubble = true;};// 为body绑定一个单击响应函数body.onclick = function(){alert("我是body的单击响应函数");};			};</script>	
</head>
<body><div id="box1">我是box1<span>我是span</span></div>
</body>
</html>

114 事件的委派

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css"></style><script type="text/javascript">	window.onload = function(){var ul = document.getElementById("ul");// 点击按钮以后添加超链接var btn01 = document.getElementById("btn01");btn01.onclick = function(){var li = document.createElement("li");li.innerHTML = "<a href='javascript:;' class='link'>新建的超链接</a>";ul.appendChild(li);};			/*为每一个超链接都绑定一个单击响应函数这里我们为每一个超链接都绑定了一个单击响应函数,这种操作比较麻烦,而且这些操作只能为已有的超链接设置事件,而新添加的超链接必须重新绑定*/// 获取所有的avar allA = document.getElementsByTagName("a");for(var i = 0; i < allA.length; i++){allA[i].onclick = function(){alert("我是a的单击响应函数");};}/*我们希望,只绑定一次事件,即可应用到多个元素上,即使元素是后添加的,我们可以尝试将其绑定给元素共同的祖先元素事件的委派:将事件统一绑定给元素共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件,时间委派是利用了冒泡,通过委派可以减少事件绑定的次数,提高程序的性能*/// 为ul绑定一个单击响应函数ul.onclick = function(event){event = event || window.event;/*target:event中的target表示触发事件的对象*/alert(event.target);// 如果触发事件的对象是我们期望的元素则执行,否则不执行if(event.target.className == "link"){alert("我是ul的单击响应函数");}};};</script>	
</head>
<body><button id="btn01">添加超链接</button><ul id="u1" style="background-color: #bfa;"><li><li><p>我是p元素</p></li></li><li><a href="javascript:;" class="link">超链接一</a></li><li><a href="javascript:;" class="link">超链接二</a></li><li><a href="javascript:;" class="link">超链接三</a></li></ul>
</body>
</html>

115 事件的绑定

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css"></style><script type="text/javascript">	window.onload = function(){/*点击按钮以后弹出一个内容*/// 获取按钮对象var btn01 = document.getElementById("btn01");/*使用对象.事件 = 函数的形式绑定响应函数,他只能同时为一个元素的一个事件绑定一个响应函数,不能绑定多个,如果绑定了多个,则后面会覆盖掉前面的*/btn01.onclick = function(){alert(1);};btn01.onclick = function(){alert(2);};/*addEventListener():通过这个方法也可以为元素绑定响应函数参数:1. 事件的字符串,不要on2. 回调函数,当事件触发时,该函数会被调用3. 是否在捕获阶段触发事件,需要一个布尔值,一般都传false使用addEventListener()可以同时为一个元素的相同事件同时绑定多个响应函数,这样当事件被触发时,响应函数将会按照函数的绑定顺序执行这个方法不支持IE8及以下浏览器*/btn01.addEventListener("click", function(){alert(this); // btn01alert(1);}, false);btn01.addEventListener("click", function(){alert(2);}, false);/*attachEvent():在IE8中可以使用attachEvent()来绑定事件参数:1. 事件的字符串,要on2. 回调函数这个方法也可以同时为一个事件绑定多个处理函数,不同的是它是后绑定先执行,执行顺序与.addEventListener()相反*/btn01.attachEvent("onclick", function(){alert(this); // windowalert(1);});btn01.attachEvent("onclick", function(){alert(2);});btn01.attachEvent("onclick", function(){alert(3);});// 定义一个函数,用来为指定元素绑定响应函数/*addEventListener()中的this是绑定事件的对象attachEvent()中的this是window需要统一两个方法this*//*参数:1. obj:要绑定事件的对象2. eventStr:事件的字符串(不要on)3. callback:回调函数*/function bind(obj, eventStr, callback){if(obj.addEventListener){// 大部分浏览器兼容方式obj.addEventListener(eventStr, callback, false);		}else{/*this是谁由调用方式决定callback.call(obj)*/// IE8及以下//obj.attachEvent("on" + eventStr, callback);				obj.attachEvent("on" + eventStr, function(){// 在匿名函数调用回调函数callback.call(obj); // button});				}}};</script>	
</head>
<body><button id="btn01">点我一下</button>
</body>
</html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 关于C/C++的编译、构建、CMake、x86_amd64等问题(自用)
  • 浅谈Trie树算法
  • 开启休假模式
  • WebSocket 协议与 HTTP 协议、定时轮询技术、长轮询技术
  • Linux 安装 Redis 6.2.14
  • vulhub靶场之wordpress关卡(保姆级教程)
  • 大数据Flink(一百零七):阿里云Flink的应用场景
  • npm ERR! missing script: serve
  • 基于MPC在线优化的有效集法位置控制器simulink建模与仿真
  • 免杀笔记 ---> 函数踩踏 PEB寻址
  • 获取UTC时间计算时间
  • POE服务机器人-快速开始
  • <Rust>使用rust实现crc16_modbus校验码生成?
  • 使用Cython调用CUDA Kernel函数
  • 【Rust光年纪】探索Rust语言中的WebSocket库和框架:优劣一览
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译]Python中的类属性与实例属性的区别
  • 【347天】每日项目总结系列085(2018.01.18)
  • CSS居中完全指南——构建CSS居中决策树
  • flask接收请求并推入栈
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Map集合、散列表、红黑树介绍
  • python 装饰器(一)
  • Vue 2.3、2.4 知识点小结
  • Vue.js 移动端适配之 vw 解决方案
  • 半理解系列--Promise的进化史
  • 给Prometheus造假数据的方法
  • 关于extract.autodesk.io的一些说明
  • 两列自适应布局方案整理
  • 我这样减少了26.5M Java内存!
  • 携程小程序初体验
  • 一道闭包题引发的思考
  • 译自由幺半群
  • 用Python写一份独特的元宵节祝福
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #android不同版本废弃api,新api。
  • #include<初见C语言之指针(5)>
  • #stm32整理(一)flash读写
  • (1) caustics\
  • (39)STM32——FLASH闪存
  • (9)目标检测_SSD的原理
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (简单) HDU 2612 Find a way,BFS。
  • (剑指Offer)面试题34:丑数
  • (十六)Flask之蓝图
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core 6 redis操作类
  • .Net IOC框架入门之一 Unity
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net Web窗口页属性
  • .Net6使用WebSocket与前端进行通信