DOM事件

1. DOM事件

事件三要素:事件源、事件、事件驱动程序

  • 事件源,也就是需要操作的对象,例如:var box = document.getElementById("box");
  • 事件,例如:onclick、onmouseenter等,例如:box.onclick = function() { 程序 };
  • 事件驱动程序,就是接下来我们将要要学习的关于DOM的操作,例如:this.innerHTML = "我是一个div盒子";

1.1 单击事件

| 事件 | 描述 | | :---: | :---: | | onclick | 鼠标点击某个对象 |

实例:给文档中的 id="box" 元素添加点击事件。

<script>window.onload = function () {var obj = document.getElementById("box");obj.onclick = function () {alert("单击事件");}}
</script>

我们也可以给元素直接添加点击事件。

<body><div onclick="testClick()">点击我</div><script>function testClick() {alert("单击事件");}</script>
</body>

1.2 双击事件

| 事件 | 描述 | | :---: | :---: | | ondblclick | 鼠标双击某个对象 |

实例:给文档中的 id="btn" 元素添加点击事件。

<body><div id="btn">双击事件</div><script>var btn = document.getElementById("btn");btn.ondblclick = function () {console.log("双击事件");};</script>
</body>

注意:如果对同一个元素添加单击事件和双击事件,需要我们自己手动区分!

1.3 焦点事件

| 事件 | 描述 | | :---: | :---: | | onfocus | 元素获得焦点时触发 | | onblur | 元素失去焦点时触发 |

实例:给文档中的id="uName"元素添加点击事件。

<body><input id="uName" type="text"><script>var input = document.getElementById("uName");input.onfocus = function () {console.log("获取焦点");};input.onblur = function () {console.log("失去焦点");}</script>
</body>

1.4 改变事件

| 事件 | 描述 | | :---: | :---: | | onchange | 域的内容被改变触发,用于input、select和textarea标签。 |

实例:给文档中的<select><input>元素添加改变事件。

<body>
故乡:<select name="city" id="city"><option value="1">北京</option><option value="2">上海</option><option value="3">广州</option><option value="4">武汉</option></select>
密码:<input id="password" type="password" placeholder="请输入密码">
<script>var city = document.getElementById("city");city.onchange = function () {console.log("选中的城市:" + this.value);};var password = document.getElementById("password");password.onchange = function () {console.log("选中的城市:" + this.value);};
</script>

1.5 鼠标事件

| 事件 | 描述 | | :---: | :---: | | onmouseover | 鼠标进入元素 | | onmouseout | 鼠标离开元素 | | onmousedown | 鼠标被按下 | | onmouseup | 鼠标被松开 | | onmousemove | 鼠标在元素上面移动 |

当鼠标指针穿过元素时,会发生 onmouseenter 事件。该事件大多数时候会与 onmouseleave 事件一起使用。onmouseover 事件和 onmouseout 事件一起使用。

与 onmouseover 事件不同,只有在鼠标指针穿过被选元素时,才会触发 onmouseenter 事件。如果鼠标指针穿过任何子元素,同样会触发 onmouseover 事件。

实例:给文档中的id="box"元素添加鼠标事件。

<body><div id="box"></div><script>window.onload = function () {var box = document.getElementById("box");// 鼠标进入box.onmouseenter = function () {console.log("鼠标进入");};// 鼠标移动box.onmousemove = function () {console.log("鼠标移动");};// 鼠标按下box.onmousedown = function () {console.log("鼠标按下");};// 鼠标抬起box.onmouseup = function () {console.log("鼠标抬起");};// 鼠标离开box.onmouseleave = function () {console.log("鼠标离开");}}</script>
</body>

1.6 键盘事件

| 事件 | 描述 | | :---: | :---: | | onkeydown | 键盘按钮按下 | | onkeyup | 键盘按钮弹起 |

实例:给文档中的id="box"元素添加鼠标事件。

<body>
<script>document.body.onkeydown = function () {console.log("键盘按钮按下");};document.body.onkeyup = function () {console.log("键盘按钮弹起");}
</script>
</body>

2. event事件对象

2.1 event属性

| 属性 | 描述 | 事件 | | :---: | :---: | :---: | | altKey | 当事件触发时是否按下了alt键 | 键盘事件 | | ctrlKey | 当事件触发时是否按下了ctrl键 | 键盘事件 | | shiftKey | 当事件触发时是否按下了shift键 | 键盘事件 | | button | 当事件触发时是按的鼠标的哪个键 | 鼠标事件 | | clientX | 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条。 | 鼠标事件 | | clientY | 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条。 | 鼠标事件 | | keyCode | 得到被按下键的ASCESC 编码 | 键盘事件 | | type | 返回当前 Event 对象表示的事件的名称 | 任意事件 | | target | 最初触发事件的DOM元素,特指事件触发源 | 任意事件 | | currentTarget | 在事件冒泡阶段中的当前DOM元素,特指当前事件源 | 任意事件 |

当前事件源,它的值一定是this(event.currentTarget == this); 事件触发源,它的值为不一定是this(event.target ?== this)。

2.2 event方法

2.2.1 阻止事件冒泡

防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数。

| 方法 | 事件 | | :---: | :---: | | event.stopPropagation() | 任意事件 |

实例:阻止文档中 id="child" 的元素事件派发。

<body><div id="parent"><div id="child"></div></div><script>var parent = document.getElementById("parent");var child = document.getElementById("child");child.onclick = function (event) {console.log("child -- 子类被触发");// 阻止事件派发event.stopPropagation();};parent.onclick = function () {console.log("parent -- 父类被触发");}</script>
</body>

2.2.2 取消事件默认行为

| 方法 | 描述 | 事件 | | :---: | :---: | :---: | | preventDefault() | 取消事件的默认动作。 | 任意事件 |

事件冒泡:是因为事件会按照DOM的层次结构像水泡一样不多向上直至顶端。

实例:阻止文档中 id="link" 元素的默认行为。

<body><a id="link" href="http://www.baidu.com">百度一下,你就知道</a><script>var link = document.getElementById("link");link.onclick = function (event) {// 阻止默认行为event.preventDefault();};</script>
</body>

3.DOM事件案例

3.1 下拉更换背景图片

知识要点:改变事件 + CSS样式操作

3.1 天猫切换商品图片

知识要点:鼠标进入事件 + CSS样式操作 + 闭包

3.2 小蜜蜂飞呀飞

知识要点:鼠标移动事件 + CSS样式操作

combox控件触发事件_dom事件相关推荐

  1. [转]如何在数据绑定时不让combox控件触发SelectedIndexChanged事件

    this.cboVendor.SelectedIndexChanged -= new System.EventHandler(this.cboVendor_SelectedIndexChanged); ...

  2. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  3. 金蝶EAS DEP脚本(5)给常用控件添加值改变事件

    给常用控件添加事件 一.F7 给F7添加值改变事件 //F7控件增加值改变监听 pluginCtx.getKDBizPromptBox("prmtCompany").addData ...

  4. 学习笔记:VB.net动态添加控件数组并传递事件

    学习笔记:VB.net动态添加控件数组并传递事件 控件数组和事件 "中间人" 动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 ...

  5. openlayer右键菜单_让OpenLayers的SelectFeature控件支持鼠标右键事件

    OpenLayers上的一个Feature对象单击出现一个气泡很容易实现,但是右键出现点菜单什么的就不容易了,关键在于SelectFeature控件不支持右键事件,所以我就改之.. 修改的源文件是基于 ...

  6. Kodak图像扫描控件的属性、事件、方法

    Kodak图像扫描控件的属性.事件.方法 1. Kodak图像扫描控件的属性 (1)DestImageControl属性 字符型.该属性连接图像扫描控件到一个图像编辑控件,允许在扫描完毕后查看图像. ...

  7. 关于日期控件中使用change事件无效的解决方法

    前端页面突然需要在选择时间后自动获取所选时间内的设备信息,我立刻写了一个change()方法,测试时发现没有触发 原因是:change事件其实就是在元素获得焦点的时候,保存当前值,失去焦点的时候,会将 ...

  8. Combox控件下拉选择不同值触发的动作响应

    项目中需要根据combox控件下拉列表选择不同的值,然后能触发相应的动作.比如我的项目中,通过combox空间的下拉列表选择不同的C盘,D盘,E盘,F盘,然后能在list控件中把各个盘符的文件目录列出 ...

  9. vs2005的webbrowser控件如何接收鼠标事件

    这个问题来自论坛提问,vs2005的webbrowser控件如何接收鼠标事件,很多事情其实自己动动脑子就有办法的.主要是3步,给dom对象插入js脚本去响应鼠标-〉通过url跳转去通知webbrows ...

  10. Qt安装事件过滤器、过滤子控件事件、截获控件按键、鼠标事件

    Qt安装事件过滤器.过滤子控件事件.截获控件按键.鼠标事件 Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理. 假设我们有一个C ...

最新文章

  1. MooTools教程(1):认识MooTools
  2. 解决selenium用cookies时候报错selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
  3. 【UWB】Kalman filter, KF卡尔曼滤波, EKF 扩展卡尔曼滤波
  4. 巴菲特的价值投资的第二版本
  5. BugKuCTF WEB web基础$_POST
  6. Android开发如何使用JNA
  7. 数据分析师mysql基础_数据分析师之mysql入门——数据检索
  8. Vue的数据依赖实现原理简析
  9. java asm methodvisitor 定义局部变量_Java ASM3学习(3)
  10. Go编译android,在Android中引用golang编译的aar包
  11. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
  12. Java权限管理(授权与认证)
  13. 绿坝十年,儿童网络安全保护问题仍未解决
  14. CVPR2020 Rotate-and-Render: Unsupervised Photorealistic Face Rotation from Single-View Images论文笔记
  15. 我陪你慢慢成长——苏子语录2015下半…
  16. 怎么拯救一个不大靠谱的数据库系统 (5 不靠谱的前生)
  17. 北京某牧场管理企业——牧场智慧管理项目
  18. java useragent 360 遨游 火狐_Chrome与火狐修改浏览器User Agent教程
  19. consider increasing the maximum size of the cache. After eviction approximately [9,230] KB of data
  20. 这份 pip 使用方法,应该算是全网最全了

热门文章

  1. 表或视图不存在 Hibernate Oracle
  2. C# System.Drawing.SystemColors 系统颜色
  3. 获取OlapConnection连接
  4. [poj2449]Remmarguts' Date(spfa+A*)
  5. 使用python的Tkinter构建应用程序
  6. WCF集成COM+应用程序遇到的问题
  7. 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
  8. docker入门、docker基本命令
  9. mysqlplus 字段验证策略fieldStrategy
  10. redis等缓存和mysql的数据同步问题解决思路