事件一般是用于浏览器和用户操作进行交互。最早是 IE 和 Netscape Navigator 中出现, 作为分担服务器端运算负载的一种手段。直到几乎所有的浏览器都支持事件处理。而 DOM2 级规范开始尝试以一种复合逻辑的方式标准化 DOM 事件

JavaScript 有三种事件模型:内联模型、脚本模型和 DOM2 模型

内联模型

这种模型是最传统接单的一种处理事件的方法。在内联模型中,事件处理函数是 HTML 标签的一个属性,用于处理指定事件。虽然内联在早期使用较多,但它是和 HTML 混写的, 并没有与 HTML 分离

  1. //在 HTML 中把事件处理函数作为属性执行 JS 代码
  2. <input type="button" value="按钮" onclick="alert('abc');" /> //注意单双引号
  3. //在 HTML 中把事件处理函数作为属性执行 JS 函数
  4. <input type="button" value="按钮" onclick="box();" /> //执行 JS 的函数,函数不得放到 window.onload 里面,这样就看不见了

脚本模型

由于内联模型违反了 HTML 与 JavaScript 代码层次分离的原则。为了解决这个问题,我 们可以在 JavaScript 中处理事件。这种处理方式就是脚本模型

  1. var input = document.getElementsByTagName('input')[0]; //得到 input 对象
  2. input.onclick = function () { //匿名函数执行
  3. alert('abc');
  4. };

通过匿名函数,可以直接触发对应的代码。也可以通过指定的函数名赋值的方式 来执行函数(赋值的函数名不要跟着括号)

  1. input.onclick = box; //把函数名赋值给事件处理函数

事件处理函数

JavaScript 可以处理的事件类型为:鼠标事件、键盘事件、HTML 事件

部分事件处理函数 :

事件处理函数 影响的元素 何时发生
onchange 输入框,选择框和文本区域 当改变一个元素的值且失去焦点时
onclick 链接、按钮、表单对象、图像映射区域 当用户单击对象时
ondblclick 链接、按钮、表单对象 当用户双击对象时
onkeydown 文档、图像、链接、表单 当按键被按下时
onkeyup 文档、图像、链接、表单 当按键被松开时
onkeypress 文档、图像、链接、表单 当按键被按下然后松开时
onload 主题、框架集、图像 文档或图像加载后
onunload 主体、框架集 文档或框架集卸载后
onmove 窗口 当浏览器窗口移动时
onselect 表单元素 当选择一个表单对象时
onsubmit 表单 当发送表格到服务器时
onreset 表单复位按钮 单击表单的 reset 按钮

所有的事件处理函数都会都有两个部分组成,on + 事件名称,例如 click 事件的事 件处理函数就是:onclick。对于每一个事件,它都有自己的触发范围和方式,如果超出了触发范围和方式,事件处理将失效

1.鼠标事件,页面所有元素都可触发

click:当用户单击鼠标按钮或按下回车键时触发

  1. input.onclick = function () { alert('abc'); };

dblclick:当用户双击主鼠标按钮时触发

  1. input.ondblclick = function () { alert('abc'); };

2.键盘事件

keydown:当用户按下键盘上任意键触发,如果按住不放,会重复触发

  1. onkeydown = function () {
  2. alert('abc');
  3. };

keypress:当用户按下键盘上的字符键触发,如果按住不放,会重复触发

  1. onkeypress = function () { alert('abc'); };

keyup:当用户释放键盘上的键触发

  1. onkeyup = function () { alert('abc'); };

3.HTML 事件

load:当页面完全加载后在 window 上面触发,或当框架集加载完毕后在框架集上触发

  1. window.onload = function () { alert('abc'); };

unload:当页面完全卸载后在 window 上面触发,或当框架集卸载后在框架集上触发

  1. window.onunload = function () { alert('abc'); };

select:当用户选择文本框(input 或 textarea)中的一个或多个字符触发

  1. input.onselect = function () { alert('abc'); };

change:当文本框(input 或 textarea)内容改变且失去焦点后触发

  1. input.onchange = function () { alert('abc'); };

submit:当用户点击提交按钮在<form>元素上触发

  1. form.onsubmit = function () { alert('abc'); };

reset:当用户点击重置按钮在<form>元素上触发

  1. form.onreset= function () { alert('abc'); };

JavaScript笔记——事件的更多相关文章

  1. javaScript 笔记(4) -- 弹窗 & 计时事件 & cookie

    弹窗 可以在 JavaScript 中创建三种消息框:警告框.确认框.提示框. 警告框:经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: window ...

  2. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  3. jQuery $(document).ready()和JavaScript onload事件

    jQuery $(document).ready()和JavaScript onload事件 Why we need a right time? 对元素的操作和事件的绑定需要等待一个合适的时机,可以看 ...

  4. js学习笔记---事件代理

    事件机制可以分为捕获型和冒泡型.捕获型是事件由父级元素(DOM)传递到子元素.冒泡型正好相反.事件机制默认为冒泡型.事件机制可以通过参数指定. 事件委托可以将我们绑定在document上的事件自动绑定 ...

  5. Javascript事件模型系列(四)我所理解的javascript自定义事件

    被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...

  6. javascript通用事件封装

    随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...

  7. javascript的事件

    前戏 今天在博客中看到了javascript的事件机制,就自己试试写一个简单的冒泡捕获测试,但是测试结果出乎了我的意料,主要是自己原来对事件了解不是很清楚,现在写篇博客记录下. 基础 先来看一下我在A ...

  8. [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象

    js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...

  9. [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符

    “1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...

随机推荐

  1. 用verilog来描述组合逻辑电路

    1,什么是组合逻辑电路? 逻辑电路在任何时刻产生的稳定的输出信号仅仅取决于该时刻的输入信号,而与过去的输入信号无关,即与输入信号作用前的状态无关,这样的电路称为组合逻辑电路. 上图给出了一个典型的数字 ...

  2. 【Python】UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3

    问题如下: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3 解决方法: 程序开始加上下面两句 sys ...

  3. LeetCode OJ:Count Primes(质数计数)

    Count the number of prime numbers less than a non-negative number, n. 计算小于n的质数的个数,当然就要用到大名鼎鼎的筛法了,代码如 ...

  4. php判断字符串长度 strlen()与mb_strlen()函数

    PHP strlen() 函数 定义和用法 strlen() 函数返回字符串的长度. 语法 strlen(string) 参数:string <?php $str=‘中文a字1符‘; echo ...

  5. 《Drools7.0.0.Final规则引擎教程》之Springboot集成

    本来准备按部就班的一章一章更新Drools相关教程,怎奈QQ群组(593177274)有朋友急需Springboot与Drools的集成demo,于是抽出时间写了一个,现在拿出来分享一下.加入群组可免 ...

  6. [置顶] Android 关于ToolBar分分钟玩死自己?

    场景一: 今天早上十点高高兴兴的跟平时早上一样买一杯粥然后一边喝着一边去上班,步行了15分钟到了公司,然后打指纹开门,然后就愉快的写代码了,我擦,好想电脑没开机,我晕好像没带眼镜,发现最近记性不是很好 ...

  7. 深度学习实战-----0001(移植反向传播Python to c++)

    1. https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/  老外教程 2. https://github. ...

  8. 查看 nginx 的并发连接数

    通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况.Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过web界面,一种是通过命令,web查看要比命令查看显示的 ...

  9. apt-get指令的autoclean,clean,autoremove的区别

    apt-get使用各用于处理apt包的公用程序集,我们可以用它来在线安装.卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具: 工具 说明 install 其后加上软件包名,用于安装一 ...

  10. python之懒惰属性(延迟初始化)

    Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建的结果,然后每次调用的时候直接返回该结果.延迟初始化主要用于提高性能,避免浪费计算,并减少程序的内存需求. 1. ...