• JavaScript-10(JavaScript事件)


    一、事件基础

    1.绑定事件

    • 把事件当做HTML元素的属性

      <button onclick="code...">

    • 把事件当做dom对象的方法

      dom.onclick = function(){code....}

    • 事件监听方式

      • addEventListener(eventName, fn, true/false)
      • attachEvent(eventName, fn)(IE8-)

    2. 解除事件的绑定

    • 绑定方式: 把事件当做html元素属性 / 把事件当做dom对象的方法

      重新绑定一个空的function,覆盖前面dom.onclick = function(){}

    • 绑定方式 是 事件监听方式

      • removeEventListener(event, fn)
      • detachEvent(event, fn)

    3.this的用法

    • 循环给一组元素绑定事件的时候

    • 事件作为html元素属性的时候,函数调用,传this表示 该元素

    • 在元素内部 通过属性形式 <button onclick="fn(this)"> 此时this表示所在的元素

        <body>
        <ul id="myList">
        	<li>哈哈哈</li>
        	<li>嘿嘿嘿</li>
        	<li>嘻嘻嘻</li>
        	<li>呵呵呵</li>
        	<li>呀呀呀</li>
        </ul>
      
        <script>
        	var lis=document.getElementById("myList").getElementsByTagName("li");
      
        	//遍历
        	for(var i=0;i<lis.length;i++){
        		lis[i].onclick=function(){
        			this.style.backgroundColor="pink";
        		}
        	}
        </script>
        </body>
      

    二、事件类型

    1.鼠标事件

    • click 单击
    • dblclick 双击
    • contextmenu 右击
    • mouseover 鼠标进入元素
    • mouseout 鼠标离开元素
    • mousedown 鼠标按键按下
    • mouseup 鼠标按键抬起
    • mousemove 鼠标移动

    2.键盘事件

    • keydown 键盘按键按下
    • keyup 键盘按键抬起
    • keypress 键盘按键 按下 (只有字符按键) (控制按键不可以 Ctrl shift 上下左右都不行)

    3.文档事件

    • load 加载完成(绑定给window、img、document.body)
    • unload 文档关闭
    • beforeunload 文档关闭 (兼容性好)

    4.表单事件

    • submit 表单提交的时候, 绑定给form元素
    • reset 表单重置, 绑定给form元素
    • blur 失去焦点(绑定给输入框)
    • focus 获得焦点(绑定给输入框)
    • change 表单控制的内容改变(通常绑定给select radio checkbox)
      • 如果绑定给input 必须同时满足两个条件
      • 内容改变和失去焦点 才能触发
    • select 可输入的元素绑定input 或 textarea 内容被选中的时候触发

    5.图片事件

    • abort 图片加载中断
    • load 图片加载完成
    • error 图片加载错误

    6.其他事件

    • scroll 元素内部的内容滚动 (适合于有滚动条的元素)
    • resize 绑定给window, 窗口尺寸发生变化

    三、Event 对象

    1.Event种类

    • mouseEvent
    • keyboardEvent
    • focusEvent

    2.属性

    • clientX 鼠标的x坐标

    • clientY 鼠标的Y坐标

    • keyCode 键盘按键的值

    • button 鼠标按键的标示

      • 0 按了左键
      • 1 按了滚轮
      • 2 按了右键
    • cancelBubble 阻止事件冒泡 设置为true

    • target 返回触发此事件的元素(具体触发事件的元素)

        <script>
        	document.onclick = function(ev){
        		/*console.log(ev.target)可以知道具体点了哪个元素*/
        		ev.target.style.backgroundColor = "green";
        	}
        </script>	
      
    • type 返回事件类型(mouse keyborad... )

    • timeStamp 返回触发事件的那一刻的时间戳(从页面打开的那一刻开始

    • altKey 返回当事件被触发时,"ALT" 是否被按下。

    • ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。

    • shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。

    3.方法

    • stopPropagation() 阻止冒泡
    • preventDefault() 阻止默认动作

    4.事件的冒泡和捕获

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>事件的冒泡和捕获</title>
    <style>
    	#big{
    		500px;	
    		height:500px;
    		border:1px solid #ccc;
    		background:#999;
    	}
    	#middle{
    		margin:100px;
    		300px;	
    		height:300px;
    		border:1px solid #ccc;
    		background:orange;
    	}
    	#small{
    		margin:100px;
    		 100px;
    		height: 100px;
    		border:1px solid #ccc;
    		background:pink;
    	}
    </style>
    </head>
    <body>
    <div id="big">
    	<div id="middle">
    		<div id="small"></div>
    	</div>
    </div>
    
    <script>
    	var bigEle=document.getElementById("big");
    	var middleEle=document.getElementById("middle");
    	var smallEle=document.getElementById("small");
    
    	/**
    	 * 分别绑定事件
    	 * 点击最小的会依次弹出Big,small,Middle
    	 */
    	bigEle.addEventListener("click",function(){
    		alert("Big");		
    	},true)/*true 捕获阶段触发*/
    
    	middleEle.addEventListener("click",function(){
    		alert("Middle");
    	})/*不设置第三个数默认为 false 冒泡*/
    
    	smallEle.addEventListener("click",function(){
    		alert("small");
    	})
    </script>
    </body>
    </html>
    

    四、Element(所有的元素都具有的属性)

    • offsetLeft
    • offsetTop
    • scrollLeft 内容向左滚动的距离(也可以为滚动条滚动的距离)
    • scrollTop 内容向上滚动的距离(也可以为滚动条滚动的距离)
    • getBoundingClientRect() 元素到视窗口的距离( box.getBoundingClientRect().left/top
  • 相关阅读:
    【存储数据恢复】EMC某型号存储raid5崩溃的数据恢复案例
    【服务器数据恢复】Unix环境zfs文件系统下重组RAID5案例分享
    【服务器数据恢复】Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
    【服务器数据恢复】浪潮服务器硬盘坏道导致raid5瘫痪的数据恢复案例
    【服务器数据恢复】5盘RAID5中4块盘重建RAID5后原RAID5的数据恢复案例
    【存储数据恢复】IBM存储文件系统损坏的数据恢复案例
    我疯了?
    修身养性, 可持续发展_613
    懂得沉淀, 明白舍得, 张弛有度, 次第花开
    两年
  • 原文地址:https://www.cnblogs.com/1666818961-lxj/p/7463673.html
Copyright © 2020-2023  润新知