一、js事件绑定在对象上的三种方法

a:将事件绑定在元素标签的属性上

<h3 onclick="console.log('奥特曼打怪兽')">海绵宝宝历险记</h3>

b:将事件作为属性添加到对象上

<h4>海绵宝宝历险记2</h4>

window.onload = function(){
var h4 = document.getElementsByTagName('h4')[0];
h4.onclick = function(){
console.log('奥特曼第二次打怪兽');
}
}

c:将事件作为方法添加到对象上。       方法名称:addElementListener()→ 向指定元素添加事件

<h4>海绵宝宝历险记3</h4>

window.onload = function(){
var h4 = document.getElementsByTagName('h4')[0];
var fyh=function(){
console.log('奥特曼第三次打怪兽');
} h4.addEventListener('click',fyh,false);
//事件名称、处理程序(回调方法)、false以冒泡方式处理
h4.removeEventListener('click',fyh,false);
//将次方法移除;方法名称:removeEventListener }
事件监听→ 事件监听移除
true 的触发顺序总是在 false 之前;
如果多个均为 true,则外层的触发先于内层;
如果多个均为 false,则内层的触发先于外层。

二、冒泡事件和捕获事件

  //捕获事件发生过程:window-document-body-div-button (从大到小)

  //冒泡事件发生过程:div-body-document-window     (从小到大)

a:冒泡事件

<h2>中国</h2>
<ul>
<li>1111111111</li>
<li>2222222222</li>
<li>3333333333</li>
</ul>

<script>

window.onload = function(){
var li= document.getElementsByTagName('li');
var ul= document.getElementsByTagName('ul')[0];
document.body.onclick=function(m){
alert('我是body');
}
ul.onclick=function (m){
alert('我是ul');
}
for (var i=0;i<li.length;i++){
li[i].onclick=function (m){
alert('我是li');
//冒泡拦截
m.cancelBubble=true; //拦截冒泡
m.stopPropagation();
}
}
}

</script>

  注:a:输出结果由内往外弹出我是li/ul/body

    b:cancelBubble=true{true为拦截冒泡,默认值是false}

       stopPropagation()

        俩个同为拦截冒泡的方式,写在一起是为了浏览器兼容使用。

b:捕获事件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#div2{width:200px;height:200px;background:#f00;} </style>
</head>
<body>
<div id="div2">
<div id="div1">点我</div>
</div>
<script>
//事件的捕获
var div2=document.getElementById('div2');
var div1=document.getElementById('div1');
div2.addEventListener('click', function(event){console.log("A");}, false);
// div2.addEventListener('click', function(event){console.log("B");});
div1.addEventListener('click', function(event){console.log("C");}, false);
// div2.addEventListener('click', function(event){console.log("D");}, true);
</script>
</body>
</html>

  注:返回结果为C、A

三、addEventListener绑定click与直接写onclick的区别

<body>
<!--addEventListener绑定click与直接写onclick的区别-->
<ul id="difference">
<li id="add_event">11111111</li>
<li id="on_click">22222222222</li>
</ul>
<script>
var on_click = document.getElementById('on_click');
on_click.onclick=function(){
// alert('click1');
};
on_click.onclick=function(){
// alert('click2');
};
//onclick绑定了两次,由于click在同一时间只能指向唯一对象,所以当对象绑定了多次,只会出现最后一次绑定。 var add_event = document.getElementById('add_event');
add_event.addEventListener('click',function(){
alert('add_event1');
},false);
add_event.addEventListener('click',function(){
alert('add_event2');
},false); //多次事件绑定的运行时使用
</script>
</body>

四、onchange事件(HTML元素被改变)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<script>
function myFunction(){
var x=document.getElementById("fname");
x.value=x.value.toUpperCase(); //获取X内的值,将input框内元素被
改变。
}
</script>
<body>
输入你的名字: <input type="text" id="fname" onchange="myFunction()">
<p>当你离开输入框后,函数将被触发,将小写字母转为大写字母。</p>
</body>
</html> 

五、onkeydown(用户按下键盘按键)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
function myFunction(){
alert("你在输入栏内按下一个键");
}
</script>
</head>
<body>
<p>当你在输入框内按下一个按键是函数被触发</p>
<input type="text" onkeydown="myFunction()">
</body>
</html>

六、onmouseover(用户把鼠标移到HTML上)和onmouseout(用户把鼠标移开HTML上)

  {示例参考w3c}  

js-07-事件的更多相关文章

  1. 探讨Js的事件的冒泡阶段

    近来看到了一个新的知识点叫Js的事件冒泡,因此决定自己来研究一番. 大家应该都知道,Js中的事件处理分为三个阶段,1:事件的捕获阶段,2:处于目标阶段,3:事件的冒泡阶段.那么什么是事件的捕获和冒泡呢 ...

  2. 浅谈js的事件冒泡机制

    很多人都听说过,js的事件冒泡机制,其实,这个说法还是比较生动形象的,就是一个水泡在水底下,冒泡到水面的过程. 那js的事件冒泡机制呢,就是一个DOM树,一级一级向上冒的过程,最终是到document ...

  3. js键盘事件全面控制详解

      js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件 ...

  4. Js 冒泡事件阻止

    Js 冒泡事件阻止   1. 事件目标 现在,事件处理程序中的变量event保存着事件对象.而event.target属性保存着发生事件的目标元素.这个属性是DOM API中规定的,但是没有被所有浏览 ...

  5. js event 事件兼容浏览器 ie不需要 event参数 firefox 需要

    js event 事件兼容浏览器    ie不需要 event参数   firefox 需要 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  6. JS通用事件监听函数

    JS通用事件监听函数 版本一 //把它全部封装到一个对象中 var obj={ readyEvent:function (fn){ if(fn==null){ fn=document; } var o ...

  7. js键盘事件全面控制

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  8. js键盘事件全面控制详解【转】

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  9. js 鼠标事件的抓取代码

    js 鼠标事件的抓取代码,分享给大家. 1.通过ele.setCapture();设置鼠标事件的抓取. 2,应用可以通过单.双击文字来获取时间. <html> <head> & ...

  10. js Touch事件(向左滑动,后退)

    js Touch事件(向左滑动,后退) 代码如下 var touch_p = { c_x : 0, c_y : 0, hasbacked : false }; function touches(ev) ...

随机推荐

  1. volatile在外设寄存器基地址定义时的作用

    volatile,作用就是告诉编译器不要因优化而省略此指令,必须每次都直接读写其值,这样就能确保每次读或者写寄存器都真正执行到位.——野火

  2. 自定义 cell

    自定义 cell 1 什么是自定义 cell 自定义 cell 即 tableView,collectionView,scrollView中的 cell 使用的时候不能满足我们使用 cell 的需求, ...

  3. Mybatis_resultMap的关联方式实现多表查询(一对多)

    a)在 ClazzMapper.xml 中定义多表连接查询 SQL 语句, 一次性查到需要的所有数据, 包括对应学生的信息. b)通过<resultMap>定义映射关系, 并通过<c ...

  4. C#语言和SQL Server数据库技术_前四章错题

      1.在C#中,如果让某个方法只能被它所在的程序集内的其他方法访问,可使用(C)修饰这个方法. (选择一项) A:private B:protected C:internal D:以上都不对 2.下 ...

  5. rsync服务的讲解

    第2章 rsync备份服务器的搭建 2.1 rsync备份服务器的概念 2.1.1 概念 rsync服务器对网站服务器数据进行备份(防止数据丢失和数据进行恢复) rsync服务器对网站服务器数据进行对 ...

  6. 【CuteJavaScript】ES2019 新特性汇总

    最近 ECMAScript2019,最新提案完成:tc39 Finished Proposals,我这里也是按照官方介绍的顺序进行整理,如有疑问,可以查看官方介绍啦~ 另外之前也整理了 <ES6 ...

  7. JS内置对象-Array之forEach()、map()、every()、some()、filter()的用法

    简述forEach().map().every().some()和filter()的用法 在文章开头,先问大家一个问题: 在Javascript中,如何处理数组中的每一项数据? 有人可能会说,这还不简 ...

  8. webpack学习_webpack-dev-server自动编译代码

    之前每次修改完之后都要执行npm run build来编译,下面有三种方式可以实现代码变化后自动编译代码,下面只重点说webpack-dev-server,其他的请看webpack开发文档 1.web ...

  9. CCF-CSP题解 201609-4 交通规划

    最小最短路径树. \(dis[j]==dis[i]+w(i,j)\)时,从\(w(i,j')\)和\(w(i,j)\)考虑.--从0分到100分. #include <bits/stdc++.h ...

  10. 《Java练习题》进阶练习题(四)

    编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序78 ...