事件(上)

事件的概述:事件相当于一个(执行者执行 -- 观察者观察 -- 处理函数执行)的流程,这个流程称为事件。是一个异步机制。

事件的组成:

    1、事件名 (内置的)

    2、执行对象 (元素对象)

    3、处理函数 (自定义函数)

    4、观察者 (js的事件引擎)

在js内书写的事件,他的观察者都是事件引擎。 我们需要关注就是前面的三个内容(事件名、执行对象、处理函数)

事件的声明书写方式:

    1、内联模式(在标签内部)

<!-- 内联模式就是在onclick书写中设置对应的代码 -->

<buttononclick="alert('你好')">点我</button>

<buttononclick="fn(1)">点我</button>

<script>

functionfn(arg){

alert('我是函数执行'+arg);

   }

</script>

    2、脚本模式 (在script中),比较常用

//脚本模式的写法 事件名 执行对象 处理函数

varbtn=document.getElementsByTagName('button')[2]

//执行对象.on+事件名 = 处理函数

btn.onclick=function(){

console.log('你好');

}

functionhandler(){

console.log('处理函数执行了');

}

btn.onclick=handler

内联模式和脚本模式的区别:

    1、内联模式里面的函数需要手动调用,而对应的脚本的模式的处理函数自动调用

    2、内联模式里面的函数调用的this指向window 对应的脚本模式里面的处理函数的this指向当前的调用者

事件名的分类:

    1、鼠标事件(鼠标触发的 mouse

        onclick 单击事件

        ondblclick 双击事件

        onmousedown 按下

        onmouseup 弹起

        onmouseenter 移入

        onmouseleave 移出

        onmouseover 移入

        onmouseout 移出

        onmousemove 移动

        oncontextmenu 右键点击

注意事项:click和对应mousedown和mouseup的执行顺序  (mousedown -- mouseup -- click)

mouseenter(mouseleave)和mouseover(mouseout)的区别: mouseenter 子元素不会触发,mouseover子元素会触发。

    2、键盘事件 (键盘触发的 key)

        onkeydown 按下

        onkeyup 弹起

        onkeypress 字符串(除功能键的其他键)

注意事项:

        1、执行顺序 :onkeydown - onkeypress - onkeyup

        2、onkeypress 一定会触发 onkeydown

HTML事件 (HTML中自带的一些事件(只能用于专门HTML))

    1、window的事件

        onload  加载事件

        onunload  卸载事件

        onclose  关闭窗口的事件 

        onbeforeprint  打印之前调用的事件 

       onbeforeunload  卸载之前调用的事件 

        onscroll   滚动栏发生变化的事件 

    2、表单的事件

        onsubmit 表单提交事件

        onreset 表单重置事件

        onselect 内容被选中(只针对于输入框和文本域)

        onchange 表单的value值发生变化

        oninput 可输入的表单标签里面进行输入

        onblur 失去焦点

        onfocus 获取焦点

    3、相关聚焦和失焦的方法

         focus 聚焦的方法

         blur 失焦的方法

//element也具备 focus() blur()

document.querySelector('input').focus()

setTimeout(function(){

document.querySelector('input').blur()

},3000)

event 事件源对象

event的概述:event 被称为事件源对象,是一个全局的内置对象(属于window),里面包含了一些关于事件执行的相关的属性。

处理函数中Arguments

概述:处理函数也是一个函数,函数就具备一个arguments的属性。argments是一个伪数组。那么就可以知道对应的处理函数里面也拥有arguments

从上述代码可得到对应的事件执行的处理函数里面会传递一个参数 ,这个参数的类型是一个event。这个处理函数的arguments数组里面只有一个元素。

故而我们可以简写为:

event的常用属性:

    1、鼠标坐标的相关属性

        screenX 表示鼠标离屏幕的X距离

        screenY 表示鼠标离屏幕的Y距离

        pageX 表示当前的鼠标离页面的X距离(包含卷起部分)

        pageY 表示当前的鼠标离页面的Y距离(包含卷起部分)

        clientX 表示鼠标离页面可视区的X距离

        clientY 表示鼠标离页面可视区的Y距离

        offsetX 表示鼠标离父元素偏移的X距离

        offsetY 表示鼠标离父元素偏移的Y距离

    2、按钮辅助的相关属性

        ctrlKey 是否按下了ctrl键

        altKey 是否按下了alt键

        shiftKey 是否按下shift键

//辅助的按键属性 返回布尔类型值

console.log(e.ctrlKey);//是否长按ctrl

console.log(e.altKey);//是否长按alt

console.log(e.shiftKey);//是否长按shift

    3、鼠标相关的属性

        button 按下是那个键

//按下的键是什么 三个值 0 1 2

console.log(e.button);//左键0 中间滚轮1 右键2

    4、事件及相关触发的属性

        type 当前的事件类型

//事件类型 返回事件名

console.log(e.type);//click

        target 表示当前事件的触发对象

//触发者元素

console.log(e.target);

        currentTarget 表示加事件的元素

//加事件的元素

console.log(e.currentTarget);

    5、键盘相关的属性

        key 表示当前按下的键的字符(区分大小写)

        keyCode (在keydown里面 不区分大小 全部是大写的ascii码)

        code (key+大写的字符)

        charCode (在keypress里面才管用 区分大小写 返回对应的ascii码)

window.onkeypress=function(e){

console.log(e.code);//当前的按钮按下键是哪个一个 返回的是一个key+大写字母

console.log(e.keyCode);//当前按下键的大写字母 ascii码

console.log(e.charCode);//当前字符的ascii码 keypress里面

console.log(e.key);//表示当前按下的键 (兼容问题)

}

    2、事件委托机制(事件代理)

概述:将对应的事件委托给对应的父元素,然后通过对应的e.target获取实际的触发元素进行操作。

事件委托的运用场景:在一个父元素里面有多个子元素要添加相同的事件的时候。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容