JavaScript 基础 学习(三)

事件三要素

1.事件源: 绑定在谁身上的事件(和谁约定好)

2.事件类型: 绑定一个什么事件

3.事件处理函数: 当行为发生的时候,要执行哪一个函数

​ 例如:

​ 1.获取元素

var box = document.querySelector('div')

​ 2.给 div 绑定一个点击事件

​ 事件源:div

​ 事件类型:click (点击行为)

​ 事件处理函数:准备一个函数,在点击行为处罚的时候执行

on 是绑定事件的一种方式

click 叫做事件类型

​ 当页打开点击在 box 这个元素上的时候,会执行后面的函数

box.onclick = function(){

console.log('我被点击了')}

常用的事件类型

​ 在 JS 的事件类型里面,没有大写字母

1.鼠标事件

​ 都是一些和鼠标相关的事件

click 点击事件

dblclick 双击事件

contextmenu 右键单击事件

mousedown 鼠标按下

mouseup 鼠标抬起

mousemove 鼠标移动

mouseover 鼠标移入

mouseout 鼠标移出

mouseenter 鼠标移入

mouseleave 鼠标移出

2.键盘事件

​ 键盘事件无法确定我是在某一个元素上按下的键盘

​ 所以一般来说我们键盘的绑定在 表单元素 或者 document

​ 因为 表单元素 可以被选中,有没有焦点

​ 因为 document 表示页面,你在这个页面中和不在这个页面中

keydown 键盘按下

keyup 键盘抬起

keypress 键盘按下

3.浏览器事件

load 加载完毕

resize 窗口滚动

scroll 滚动条滚动

4.表单事件

​ 专门给 form 标签和 input 标签 和 textarea 标签和 select 标签使用的

focus 聚焦事件

blur 失焦事件

change 改变事件

input 输入事件

submit 提交事件(绑定给 form 标签)

reset 重置事件(绑定给 form 标签)

5.移动端触摸事件

touchstart 触摸开始(手放在屏幕上的时候)

touchmove 触摸移动(手在屏幕上移动)

touchend 触摸结束(手离开屏幕的时候)

6.其他事件

transitionend 过渡动画结束 需要绑定特殊的绑定方式

animationend 帧动画结束 需要特殊的绑定方式

selectstart 开始框文本

事件对象

​ 在每一个事件触发的时候都应该有一些描述性的信息

​ 1.触发的是什么事件

​ 2.鼠标事件的时候,光标坐标点是什么

​ 3.键盘事件的时候,按下的是哪一个按键

​ 当我们把这些信息放到了一个 对象 里面的时候

​ 我们就管这个对象叫做 事件对象

事件对象就是一个保存了本次事件的描述信息的对象数据类型

​  当你触发事件的时候, 浏览器会帮我们记录好这些内容

​ 你只要获取到事件对象, 去里面进行查看就可以了

​ 当你绑定好一个事件的以后

​ 当用户触发这个事件的时候

​ 那么浏览器会帮我们把关于这个事件的所有信息都记录下来

​ 给到我们, 让我们使用

​ 如何在事件里面获取事件对象

​ 标准浏览器 => 直接在事件处理函数的时候接收一个形参的形式

box.onclick = function (e) {}

e => 就是一个形参, 你可以写 event 或者 ev 或者 e

​ 会在事件触发的时候, 由 浏览器 给我们传递实参

​ 我们直接在事件处理函数里面使用 e 就可以了

​ 得到的就是事件对象(里面包含本次事件的一些描述信息)

​ 所有事件都有事件对象

IE 低版本 => 要使用 window.event 来获取

​ 直接在事件处理函数里面使用 window.event 来获取

兼容方式

​ 接收形参 e

​ 在事件处理函数里面写 e = e || window.event

​ 给形参 e进行重新赋值

赋值的内容, 如果有实参, 就使用实参, 如果没有, 就使用 window.event

事件对象里面的信息 - 鼠标事件

1.button 属性: 决定的是你按下的鼠标的哪一个按键

2.clientX 和 clientY 属性: 相对于浏览器可视窗口左上角的坐标

3.pageX 和 pageY 属性: 相对于页面左上角的坐标

4.offsetX 和 offsetY 属性: 相对于元素左上角的坐标

事件对象里面的信息 - 键盘事件

​ 键盘事件里面的主要信息就是

1.按下的是哪一个按键

​ 每一个键盘每一个按键都有一个自己的编码

​ 通过事件对象里面的编码来确定按下时哪一个按键

​ 获取编码的信息有两个

e.keyCode 标准浏览器

e.which 火狐 < 20 的版本

兼容处理

var dode = e.keyCode||e.which

2.你按下的是不是组合按键

​ 在事件对象里面有四个属性

shiftKey 判断 shift 按键

ctrlKey 判断 ctrl 按键

altKey 判断 alt 按键

metaKey 判断 win 按键

​ 他们四个的值是布尔值

​ 默认是 false ,表示没有按下

​ 当你按下去的时候,他就变成 true ,表示按下了

​ 我们在判断组合按键的时候

​ 只要多判断一个属性是不是 true 就能知道你按下的是不是组合按键

if(code === 65&&e.shiftKey === true && e.ctrlKey === true && e.altKey === true){

aletr('您按下的是 shift + ctrl + alt +a')

console.log(e)}

事件监听器

​ 就是我们绑定事件的第二种方式

dom0级 事件:使用 on 的方式进行绑定

dom2级 事件:使用 监听器 的方式进行绑定

​ 监听器:我们有两种监听器

​ 标准浏览器使用的 监听器

IE 低版本使用的监听器

1.标准浏览器的事件监听器

语法: 元素.addEventListener ('事件类型',事件处理函数)

作用: 给元素添加一个事件处理函数,当事件触发的时候有函数执行

2.IE 低版本的事件监听器

语法: 元素.attachEvent ('on 事件类型',事件处理函数)

作用: 给元素添加一个事件处理函数,当事件触发的时候有函数执行

3.dom0级 和 dom2级 的区别

dom0 级事件,只能给一种事件绑定一个事件处理函数

​ 因为是 " = " 赋值,当赋值第二个值的时候,第一个就被覆盖了

dom2 级事件,可以给一种事件绑定多个事件处理函数

​ 当事件触发的时候都会执行

dom2 级事件中,addEventListerattachEvet 的区别

addEventLister

​ 1.使用在标准浏览器

​ 2.事件类型位置不需要 on

​ 3.至少两个参数,一个是事件类型,一个是事件处理函数

​ 4.当你给一个事件注册多个事件处理函数的时候

​ 顺序注册,顺序执行

attachEvent

​ 1.使用在 IE 低版本浏览器

​ 2.事件类型位置需要 on

​ 3.只有两个参数, 一个是事件类型, 一个是事件处理函数

​ 4.当你给一个事件注册多个事件处理函数的时候

​ 顺序注册, 倒叙执行

JavaScript 基础 学习(三)的更多相关文章

  1. JavaScript基础学习(三)—数组

    一.数组简介     JavaScript数组的每一项都可以保存任何类型的数据,也就是说数组的第一个位置保存字符串,第二个位置可以保存数值,第三个位置可以保存对象,而且数组的大小是可以动态调整的,即可 ...

  2. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

  3. JavaScript 基础学习(二)js 和 html 的结合方式

    第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...

  4. JavaScript 基础 学习 (四)

    JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 ​ 元素.on事件类型 = null ​ 因为赋值的关系,所以给事件赋值为 null 的时候 ​ 事件触发的时候,就没有事件处理 ...

  5. JavaScript 基础 学习 (一)

    JavaScript 基础 学习 获取页面中的元素的方法 作用:通过各种方式获取页面中的元素 ​ 比如:id,类名,标签名,选择器 的方式来获取元素 ​ 伪数组: ​ 长的和数组差不多,也是按照索引排 ...

  6. JavaScript基础(三)

    十三.JS中的面向对象 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 ...

  7. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  8. 48.javascript基础学习

    javascript基础学习:   http://www.w3school.com.cn/jsref/index.asp jS的引入方式: 1.行间事件:为某一个具体的元素标签赋予js内容,oncli ...

  9. Python基础学习三

    Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...

随机推荐

  1. 网页中为什么常用AT替换@(repost from https://zhidao.baidu.com/question/122291.html)

    经常在个人主页上看到别人的邮箱地址中@被AT符号替代,很是迷惑,这样替代有什么好处呢?还是说html原有的原因使界面中不能出现@,查阅资料后解答如下: 写成AT [at],是为了防止被一些邮件扫描器搜 ...

  2. 如何解压bz2后缀的压缩文件

    .bz2 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf F ...

  3. 为什么启动线程是start方法?

    为什么启动线程是start方法 十年可见春去秋来,百年可证生老病死,千年可叹王朝更替,万年可见斗转星移.   凡人如果用一天的视野,去窥探百万年的天地,是否就如同井底之蛙? 背景:启动线程是start ...

  4. Nginx 如何自定义变量?

    之前的两篇文章 Nginx 变量介绍以及利用 Nginx 变量做防盗链 讲的是 Nginx 有哪些变量以及一个常见的应用.那么如此灵活的 Nginx 怎么能不支持自定义变量呢,今天的文章就来说一下自定 ...

  5. IDEA+Maven+Tomcat构建Web项目的三种方法

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文将介绍三种方 ...

  6. DNS篇(详解DNS)

    *文章来源:https://blog.egsec.cn/archives/601 *本文将主要说明:本文主要叙述什么是DNS.域名的层级.DNS 解析过程.DNS的缓存时间.DNS 的记录类型.DNS ...

  7. python黑帽子之tcp客户端

    在渗透测试过程中,我们经常会需要创建一个tcp客户端来连接服务,发送垃圾数据,进行模糊测试等任务,所以我们来用python创建一个简单的tcp客户端. import sockettarget_host ...

  8. node+ajax实战案例(2)

    2.静态资源渲染 2.1.创建http服务器 var http = require('http'); var url = require('url'); var app = http.createSe ...

  9. P2194 HXY烧情侣【Tarjan】

    前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...

  10. 【总结】Github通过Git Bash上传文件到仓库

    1-ML新文件夹连接仓库gir clone(最好用SSH不需要输入账户密码  SSH需要设置秘钥) 2-ML中设立空文件夹与项目同名(要新建  打开隐藏文件选项  文件夹内不许有文件会报错) 3-在项 ...