JavaScript笔记——事件
事件一般是用于浏览器和用户操作进行交互。最早是 IE 和 Netscape Navigator 中出现, 作为分担服务器端运算负载的一种手段。直到几乎所有的浏览器都支持事件处理。而 DOM2 级规范开始尝试以一种复合逻辑的方式标准化 DOM 事件
JavaScript 有三种事件模型:内联模型、脚本模型和 DOM2 模型
内联模型
这种模型是最传统接单的一种处理事件的方法。在内联模型中,事件处理函数是 HTML 标签的一个属性,用于处理指定事件。虽然内联在早期使用较多,但它是和 HTML 混写的, 并没有与 HTML 分离
//在 HTML 中把事件处理函数作为属性执行 JS 代码
<input type="button" value="按钮" onclick="alert('abc');" /> //注意单双引号
//在 HTML 中把事件处理函数作为属性执行 JS 函数
<input type="button" value="按钮" onclick="box();" /> //执行 JS 的函数,函数不得放到 window.onload 里面,这样就看不见了
脚本模型
由于内联模型违反了 HTML 与 JavaScript 代码层次分离的原则。为了解决这个问题,我 们可以在 JavaScript 中处理事件。这种处理方式就是脚本模型
var input = document.getElementsByTagName('input')[0]; //得到 input 对象
input.onclick = function () { //匿名函数执行
alert('abc');
};
通过匿名函数,可以直接触发对应的代码。也可以通过指定的函数名赋值的方式 来执行函数(赋值的函数名不要跟着括号)
input.onclick = box; //把函数名赋值给事件处理函数
事件处理函数
JavaScript 可以处理的事件类型为:鼠标事件、键盘事件、HTML 事件
部分事件处理函数 :
| 事件处理函数 | 影响的元素 | 何时发生 |
| onchange | 输入框,选择框和文本区域 | 当改变一个元素的值且失去焦点时 |
| onclick | 链接、按钮、表单对象、图像映射区域 | 当用户单击对象时 |
| ondblclick | 链接、按钮、表单对象 | 当用户双击对象时 |
| onkeydown | 文档、图像、链接、表单 | 当按键被按下时 |
| onkeyup | 文档、图像、链接、表单 | 当按键被松开时 |
| onkeypress | 文档、图像、链接、表单 | 当按键被按下然后松开时 |
| onload | 主题、框架集、图像 | 文档或图像加载后 |
| onunload | 主体、框架集 | 文档或框架集卸载后 |
| onmove | 窗口 | 当浏览器窗口移动时 |
| onselect | 表单元素 | 当选择一个表单对象时 |
| onsubmit | 表单 | 当发送表格到服务器时 |
| onreset | 表单复位按钮 | 单击表单的 reset 按钮 |
所有的事件处理函数都会都有两个部分组成,on + 事件名称,例如 click 事件的事 件处理函数就是:onclick。对于每一个事件,它都有自己的触发范围和方式,如果超出了触发范围和方式,事件处理将失效
1.鼠标事件,页面所有元素都可触发
click:当用户单击鼠标按钮或按下回车键时触发
input.onclick = function () { alert('abc'); };
dblclick:当用户双击主鼠标按钮时触发
input.ondblclick = function () { alert('abc'); };
2.键盘事件
keydown:当用户按下键盘上任意键触发,如果按住不放,会重复触发
onkeydown = function () {
alert('abc');
};
keypress:当用户按下键盘上的字符键触发,如果按住不放,会重复触发
onkeypress = function () { alert('abc'); };
keyup:当用户释放键盘上的键触发
onkeyup = function () { alert('abc'); };
3.HTML 事件
load:当页面完全加载后在 window 上面触发,或当框架集加载完毕后在框架集上触发
window.onload = function () { alert('abc'); };
unload:当页面完全卸载后在 window 上面触发,或当框架集卸载后在框架集上触发
window.onunload = function () { alert('abc'); };
select:当用户选择文本框(input 或 textarea)中的一个或多个字符触发
input.onselect = function () { alert('abc'); };
change:当文本框(input 或 textarea)内容改变且失去焦点后触发
input.onchange = function () { alert('abc'); };
submit:当用户点击提交按钮在<form>元素上触发
form.onsubmit = function () { alert('abc'); };
reset:当用户点击重置按钮在<form>元素上触发
form.onreset= function () { alert('abc'); };
JavaScript笔记——事件的更多相关文章
- javaScript 笔记(4) -- 弹窗 & 计时事件 & cookie
弹窗 可以在 JavaScript 中创建三种消息框:警告框.确认框.提示框. 警告框:经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: window ...
- [Effective JavaScript 笔记]第3章:使用函数--个人总结
前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...
- jQuery $(document).ready()和JavaScript onload事件
jQuery $(document).ready()和JavaScript onload事件 Why we need a right time? 对元素的操作和事件的绑定需要等待一个合适的时机,可以看 ...
- js学习笔记---事件代理
事件机制可以分为捕获型和冒泡型.捕获型是事件由父级元素(DOM)传递到子元素.冒泡型正好相反.事件机制默认为冒泡型.事件机制可以通过参数指定. 事件委托可以将我们绑定在document上的事件自动绑定 ...
- Javascript事件模型系列(四)我所理解的javascript自定义事件
被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...
- javascript通用事件封装
随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...
- javascript的事件
前戏 今天在博客中看到了javascript的事件机制,就自己试试写一个简单的冒泡捕获测试,但是测试结果出乎了我的意料,主要是自己原来对事件了解不是很清楚,现在写篇博客记录下. 基础 先来看一下我在A ...
- [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象
js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...
- [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符
“1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...
随机推荐
- git生成和检查秘钥操作
查看本地是否有git config的配置: git config --list 设置用户名和邮箱: $git config --global user.email "tanteng@gmai ...
- 智课雅思词汇---二十五、形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y
智课雅思词汇---二十五.形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y 一.总结 一句话总结: 1.形容词后缀-ate(determinate)? determi ...
- python之单元测试框架—unittest(补充)
一. unittest最核心的四个概念 unittest中最核心的四个概念是:test case,test suite,test runner,test fixture TestCase:一个test ...
- Eclipse中Preference打开后找不到Server项解决方案。
该解决方案是假设你已经安装好了JDK,tomcat,eclipse,突然在Eclipse的配置时找不到选择菜单栏中的window——preferences-server——runtime enviro ...
- linux rpm命令安装卸载 初步使用
安装(以安装jdk为例) 1.下载后,首先把jdk-7u3-linux-x64.rpm复制到/usr/local/src#cp jdk-7u3-linux-x64.rpm /usr/local/src ...
- iOS自动化探索(四)自动化测试框架pytest - 安装和使用
自动化测试框架 - pytest pytest是Python最流行的单元测试框架之一, 帮助更便捷的编写测试脚本, 并支持多种功能复杂的测试场景, 能用来做app测试也能用作函数测试 官方文档: ht ...
- 打造万能的Python开发环境
一.下载与安装 python的版本众多,主流的分2和3,还有各种小版本. django等也有众多版本. 在我们开发过程中,为使用不同的版本测试,在一台电脑上进行只能进行替换. 为了简化.我们使用con ...
- 【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-J】 强迫症的序列
小A是一个中度强迫症患者,每次做数组有关的题目都异常难受,他十分希望数组的每一个元素都一样大,这样子看起来才是最棒的,所以他决定通过一些操作把这个变成一个看起来不难受的数组,但他又想不要和之前的那个数 ...
- Struts01---入门小案例
创建web项目 实现的效果! 用户点击页面不同的链接,后台调用不同的代码! 创建两个类实现共同的接口! public interface Action { String execute(); } ...
- L134
这种成功和后来的研究(表明记忆本身并不是先天决定的)使爱立信总结到,记忆的行为与其说是一种习得的行为不如说是一种先天的行为. 这点我们不清楚-构思物体和找出数字模型的能力,回答问题(最好的诗人和哲学家 ...