JS笔记:第13、14章 事件和表单脚本

本文详细介绍了JavaScript中的事件处理,包括事件流(冒泡和捕获)、事件处理程序(HTML、DOM0级、DOM2级、IE方式)和事件对象。此外,还讲解了DOM3级事件中的各种事件类型,如UI事件、焦点事件、鼠标事件等。在表单脚本部分,介绍了表单的提交、重置、字段属性、文本框和选择框的脚本操作,以及富文本编辑器的实现和交互。通过对事件和表单的深入理解,可以更好地实现页面交互和表单验证。
摘要由CSDN通过智能技术生成

13 事件

JavaScriptHTML之间的交互是通过事件实现的。


事件流:

事件流描述的是从页面中接收事件的顺序。但有意思的是IENetscape开发团队居然提出了差不多完全相反的事件流的概念。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流。

1)事件冒泡

IE的事件流叫事件冒泡,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。

2)事件捕获

Netscape团队提出的另一种事件流叫做事件捕获。事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

3DOM事件流

DOM2级事件“规定的事件流包括了三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。


事件处理程序:

事件就是用户或浏览器自身执行的某个动作。诸如clickloadmouseover,都是事件的名字。而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。为事件指定处理程序的方式有好几种。

1HTML事件处理程序

某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML特性来指定。

事件处理程序函数中有一个局部变量event,也就是事件对象。

2DOM0级事件处理程序

通过JavaScript指定事件处理程序的传统方式,就是将一个函数赋值给一个事件处理程序属性。这样有两个优势,一个是简单,一个是具有跨浏览器的优势。要使用JavaScript指定事件处理程序,首先必须取得一个要操作对象的引用。

每个元素(包括windowdocument)都有自己的事件处理程序属性,这些属性通常全部小写,例如onclick

Var btn = document.getElementById(“mybtn”);

btn.onclick = function(){};

使用DOM0级方法指定的事件处理程序被认为是元素的方法。换句话说,程序中的this引用当前元素。会在事件流的冒泡阶段被处理。

3DOM2级事件处理程序

DOM2级事件“定义了两个方法,用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。所有DOM节点都包含这两个方法,都接收3个参数:要处理的事件名、事件处理程序函数、一个布尔值。最后这个布尔值如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。

Var btn = document.getElementById(“mybtn”);

btn.addEventListener(“click”,function(){},false);

通过addEventListener添加的事件处理程序只能使用removeEventListener()来移除,移除时得传入相同的参数,这意味着添加的匿名函数将无法被移除。

4IE事件处理程序

IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。这两个方法接受相同的两个参数:事件处理程序名称与事件处理程序函数。

Var btn = document.getElementById(“mybtn”);

btn.attachEvent(“onclick”,function(){});

IE中使用attachEvent()与使用DOM0级方法的主要区别在于事件处理程序的作用域。使用attachEvent()方法的作用域为全局。

5)跨浏览器的事件处理程序

使用能力检测来进行判断使用哪种处理程序;


事件对象:

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。包括导致事件的元素、事件的类型以及其他与特定事件相关的信息。

1DOM中的事件对象

event.type可以为clickmouseovermouseout等;

要阻止特定事件的默认行为,可以使用preventDefault()方法。例如,链接的默认行为就是在被单击时会导航到其href特性指定的URL。如果你想阻止链接导航这一默认行为,那么通过链接的onclick事件处理程序可以取消它。

link.onclick = function(event){event.preventDefault();};

只有cancelable属性值设置为true的事件,才可以使用preventDefault()来取消其默认行为。

另外,stopPropagation()方法用于立即停止事件在DOM层次中的传播,即取消进一步的事件捕获或冒泡。

2IE中的事件对象

与访问DOM中的event对象不同,要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。

在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在。

在使用attachEvent()添加时,event对象作为参数被传入事件处理程序函数中。

3)跨浏览器的事件对象


事件类型:

DOM3级事件规定了以下几类事件:

UI事件:当用户与页面上的元素交互时触发;

焦点事件:当元素获得或失去焦点时触发;

鼠标事件:当用户通过鼠标在页面上执行操作时触发;

滚轮事件&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值