js事件总结

事件绑定一个吻函数,当这个事件发生时才会触发这个函数调用

事件类型,事件驱动,事件流,事件对象

注意:<input  type=text  οnclick=函数名称() />

itnode.onclick = 函数名称; 函数名称后边不要加括号

三.事件操作

1.什么是事件

通过鼠标键盘浏览器页面所做的动作就是事件。

事件一旦发生需要有事件处理,该处理称为“事件驱动”,事件驱动通常由函数担任

onclick:鼠标点击

onmouseover:鼠标移入

onmouseout:鼠标移出

onkeyup:键盘按下并抬起

onkeydown:键盘按下

onchange:内容改变

onblur:失去焦点

onfocus:获得焦点

onsubmit:表单提交

2. 设置事件

2.1 dom1级方式设置

<input  type=text  οnclick=函数名称() />

function 函数名称(){this[window]}

 

<input  type=text οnclick=过程代码this[itnode] />

 

itnode.onclick = function(){this[itnode]}  匿名函数

 

itnode.onclick =函数名称; 函数名称后边不要加括号  有名函数

function 函数名称(){this[itnode]}

 

取消dom1事件:

itnode.onclick = null;

 

以上是dom1级事件设置的4种具体表现形式,this关键字除了第①种其代表window对象,其他三种都代表事件节点对象本身

2.2 dom2级方式事件设置

1) 主流浏览器方式(包括IE9以上 版本浏览器)

itnode.addEventListener(事件类型,事件处理[,事件流]);  //设置

itnode.removeEventListener(事件类型,事件处理[,事件流]);   //取消

2) IE浏览器方式(IE6/7/8)

itnode.attachEvent(事件类型,事件处理);  //设置

itnode.detachEvent(事件类型,事件处理); //取消

 

事件类型:就是我们可以设置的具体事件,例如onclick/onmouseover

              主流浏览器方式没有on标志,例如addEventListener(click’,...);

  IE浏览器方式on标志,例如attachEvent(onclick)

事件处理:事件驱动,可以是一个有名/匿名 函数

  例如addEventListener(click,function(){}/有名函数);

事件流:true捕捉型、[false冒泡型]

事件取消(removeEventListener/detachEvent)操作具体要求

① 事件处理 必须是有名函数,不可以是匿名函数。

② 事件取消的参数与绑定的参数完全一致(数量/内容)

 

dom2级事件设置的特点:

① 可以为同一个对象设置多个同类型事件。

② 事件取消也非常灵活。

③ 对事件流也有很好的处理控制

 

dom2级事件简单设置:

 

 

 

可以为同一个对象绑定多个同类型事件:

 

 

通过有名函数设置事件:

 

 

 

 

 

 

 

 

 

 

 

事件取消操作:


3. 事件流

多个彼此嵌套元素,他们拥有相同的事件,最内部元素事件被触发后,外边多个元素的同类型事件也会被触发,多个元素他们同类型事件同时执行的效果称为事件流

 

 

事件流分为两种类型:

冒泡型:事件从内部外部依次执行。

捕捉型:事件从外部内部依次执行。

//addEventListener(类型,处理,事件流true捕捉/[false冒泡]);

 

IE浏览器从开始到后期事件流始终是“冒泡型的,直到IE9以后版本两种都开始支持。

网景的Navigator浏览器(现在火狐浏览器的许多血统来源于navigator浏览器)一开始的事件流是捕捉型。后期事件流有改进,针对捕捉型冒泡型都可以支持。

 

 

 

对事件流类型的控制:

 

4. 事件对象

事件对象,每个事件(包括鼠标、键盘事件)触发执行的过程中,都有对应的事件对象,通过事件对象可以获得鼠标相对页面的坐标信息、通过事件对象也可以感知什么键被 触发执行、通过事件对象还可以阻止事件流产生、阻止浏览器默认动作

4.1 获得事件对象

获得:

①主流浏览器(IE9以上版本浏览器)

事件处理函数的第一个形参就是 事件对象

例如:

node.onclick = function(evt){evt就是事件对象}

addEventListener(类型,function(evt){}/函数名字);

function 函数名称(evt){}

红色的evt就是事件对象

IE(6/7/8)浏览器

node.onclick = function(){window.event事件对象}

全局变量event就是事件对象

全局变量直接上级对象是window。可以通过window访问全局变量信息。

window.document.getElementById()

获取事件对象:

 

 

4.2 事件对象作用    1)获得鼠标的坐标信息

event.clientX/clientY;    //相对dom区域坐标

event.pageX/pageY;        //相对dom区域坐标,给考虑滚动条距离

event.screenX/screenY;    //相对电脑屏幕坐标

 

2) 阻止事件流:

event.stopPropagation();  //主流浏览器

window.event.cancelBubble = true; // IE(678)浏览器

冒泡型捕捉型都可以进行阻止,为了阻止比较有意义,只考虑冒泡型即可

阻止冒泡型的才有意义

 

3) 感知被触发键盘键子信息

event.keyCode  获得键盘对应的键值码信息

通过事件触发时候获得的keyCode数值码信息可以对应键盘的键子信息。

 

4) 阻止浏览器默认动作

浏览器默认动作,注册form表单页面,提交表单的时候,浏览器的页面会根据action属性值进行跳转,这个动作称为“浏览器默认动作”。

form表单提交的时候,需要对各个表单域进行验证,如果验证失败则禁止浏览器跳转。

 

event.preventDefault();//主流浏览器(dom1dom2级事件都起作用)

event.returnValue = false; //IE(678)浏览器

return  false;          //dom1级事件设置起作用

 

 

5.加载事件onload

什么是加载事件:

js代码执行时候,需要html&css支持,就让html代码先执行(先进入内存)js代码后执行

js代码在最后执行的过程就是“加载过程”,通常通过“加载事件”实现加载过程

 

加载事件onload可以保证js代码后于html&css执行,其要在最后执行。

具体设置:

<body οnlοad=加载函数()>

window.onload = 匿名/有名 函数;  //推荐

 

四.BOM

DOMdocument  object model(文档对象模型)

BOM:browser  object  model(浏览器对象模型)

通过BOM技术可以模拟浏览器对页面进行各种操作:创建子级标签页面、操作历史记录页面、操作地址栏等等

 

获取和设置浏览器地址栏信息:

 

 

 

通过setIntervalclearInterval实现时钟显示和停止效果:

 

 

总结:

1. dom2级事件操作

元素节点.addEventListener(类型,处理,事件流);设置事件

元素节点.removeEventListener(类型,处理,事件流);取消事件

 

dom2级事件特点:

① 同一个对象可以设置多个同类型事件

② 事件取消非常灵活

③ 可以操作事件流

 

2. 事件流操作

多个彼此嵌套的元素,它们同类型事件按照顺序依次执行的过程就是“事件流”

类型:冒泡型、捕捉型

3. 事件对象

1) 获取事件对象

主流浏览器:事件处理函数的第一个形参

2) 事件对象作用

① 获得鼠标坐标

② 获得被触发键子信息

③ 阻止事件流产生(冒泡)

④ 阻止浏览器默认动作

4. 加载事件

该事件可以保证js代码在最后执行,先执行htmlcss代码

window.onload = (有名/匿名)函数;

<body onload = 函数()>

5. BOM浏览器对象模型

location.href 获取地址栏信息、修改地址信息进行页面跳转

 


作业:

1. 利用dom技术实现无序列表(ul/li)制作,至少4li的项目,最后在body里边显示出来

2. 1作业的基础上,给每个li设置mouseovermouseout事件,控制li的背景颜色(设置/取消),达到鼠标当前行高亮显示的效果

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值