1、常用的事件:

onload:页面加载

② onblur: 失去焦点 onfocus: 获取焦点

onclick:点击

④ onmouseover:鼠标经过 onmouseout:鼠标离开

onchange:内容改变

onsubmit:表单提交

2、绑定事件方式:

(1)行内绑定:

<元素 事件="事件处理程序(函数)">
<script>
function 函数名(){
console.log(this); //行内绑定的this是指向window
}
</script>

(2)动态绑定(用于结构+样式+行为分离的页面):

前提是进行window.load的初始化,在初始化过程中将事件绑定到元素(标签)上

语法:对象.事件 = 事件处理程序

<button id="btn" >按钮</button>

//js文件:通过window.onload 进行初始化,在初始化的过程中将事件动态绑定到元素上
window.onload = function (){
document.getElementById("btn").onclick = function (){
console.log(this);
}
}

(3)事件监听(为一个对象绑定多个事件处理程序)

   ① ie: attachEvent(type, callback)

     type:事件名,例如 onclick、onsubmit、onchange等  

     callback:事件处理程序(函数)

  ② 基于w3c模式:attachEventListener(type, callback, [capture])

     type:事件名,(没有前缀on)例如 click、submit、change等  

     callback:事件处理程序(函数)

     capture:可选,事件模型(为true是捕捉模式,false是冒泡模式)
//进行ie或w3c的判断
function addEvent(obj, type, callback){
if(window.attachEvent){
obj.attachEvent('on' + type, callback);
}else {
obj.addEventListener(type, callback);
}
}

3、取消事件冒泡:

① ie: window.event.cancelBubble = true;
② w3c: function(event) {//方法的第一个参数是event
event.stopPropagation();
} //进行ie或w3c的判断
function stopBubble(event){
if(window.event){
window.event.cancelBubble = true;
}else{
event.stopPropagation();
}
}

4、取消默认行为(例如:提交按钮、超链接)

  • 有些情况需要取消掉默认行为,例如资料填写不完整,将提交按钮的提交行为进行取消
//方法一:return false取消
<form method="get" action="#" onsubmit="return false"> //取消表单提交
//方法二:ie:window.event.returnValue = false;
// w3c: event.preventDefault();
<form method="get" action="#" >
<input type="text" name="name" id="name"/>
<input type="submit" value="提交" id="submit"/>
</form> <script>
window.onload = function (){
document.getElementById('submit').onclick = function (event) {
if(document.getElementById('name').value===''){
if(window.event){
window.event.returnValue = false; //ie
}else{
event.preventDefault(); //w3c
}
}
}
}
</script>

5、事件对象(事件发生时产生的对象,该对象包含了该事件的所有信息)

■ 获取事件对象:

① ie8 :window.event

② ie9、w3c: function(event){ } //函数的第一个形参

学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象的更多相关文章

  1. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  2. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  3. 【EatBook】-NO.1.EatBook.1.JavaData.1.001-《JSON 必知必会-Introduction to JavaScript Object Notation》-

    1.0.0 Summary Tittle:[EatBook]-NO.1.EatBook.1.JavaData.1.001-<JSON 必知必会-Introduction to JavaScrip ...

  4. 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)

    不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...

  5. 《MySQL必知必会》学习笔记——前言

    前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...

  6. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  7. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

  8. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  9. mysql学习--mysql必知必会

      上图为数据库操作分类:     下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...

  10. 数据库学习之中的一个: 在 Oracle sql developer上执行SQL必知必会脚本

    1 首先在開始菜单中打开sql developer: 2. 创建数据库连接 点击左上角的加号 在弹出的对话框中填写username和password 測试假设成功则点击连接,记得角色要写SYSDBA ...

随机推荐

  1. [BUUCTF]REVERSE——CrackRTF

    CrackRTF 附件 步骤: 例行查壳儿,32位程序,无壳儿 32位ida载入,main函数开始分析程序 破解第一个密码 sub_40100A()是一个加密函数,具体的写的算法没去分析,但是Cryp ...

  2. Windwos堆管理体系以及溢出利用

    <0day安全>学习笔记,主要讨论WIndows2000~WIndowsSP1平台的堆管理策略. 0X01 堆与栈的区别 栈空间是在程序设计时已经规定好怎么使用,使用多少内存空间.典型的栈 ...

  3. 设置项目的日程排定方式(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 [项目]>[属性]>[项目信息]>[日程排定方法]>选取: 默认项是[项目开始日期]. 这两位是干 ...

  4. OpenWrt之DNS设置

    目录 OpenWrt之DNS设置 0.前言 1.WAN口 2.Lan口 3.LAN口DHCP选项 4.DHCP/DNS 5.总结 参考(Thanks) 附录.DHCP OPTION OpenWrt之D ...

  5. MySQL 分区表,为什么分区键必须是主键的一部分?

    随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降. 这个临界值,并不能一概而论,它与硬件能力.具体业务有关. 虽然在很多 MySQ ...

  6. 大小端(内存、寄存器、CPU)

    CPU能进行32位操作,关键是寄存器有32位,数据总线也有32位. 为了表示方便,我们可以把32位寄存器从左到右,与内存中一个双字的四个字节地址从低到高对应. 如果CPU把寄存器的左端定义为高位,则带 ...

  7. Nginx中配置反向代理的proxy_pass的不同斜杠的区别

    location /api1/ { proxy_pass http://localhost:8080; } # http://localhost/api1/xxx -> http://local ...

  8. 安装选择msi格式还是zip(windows下Nodejs zip版下载安装及环境变量配置)

    安装选择msi格式还是zip((windows下Nodejs zip版下载安装及环境变量配置)) -----以node.js 安装为例: 1,外观对比: ✿ 简单介绍一下node的作用: • node ...

  9. 【LeetCode】27. Remove Element 解题报告(Python & Java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 双指针 记录起始位置 日期 题目地址:https:/ ...

  10. 【LeetCode】1042. Flower Planting With No Adjacent 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 图 日期 题目地址:https://leetcode ...