JS事件处理和事件对象

1.HTML事件处理

直接添加到html结构中处理程序属性

<body>
<button onclick="demo()">按钮</button>
<script>
function demo(){
    alert("html事件处理");
}
</script>
</body>

这种html事件处理有很大坏处是修改一处函数名称必须同时修改两处(onclick事件内容也要修改)

2.DOMO级事件处理

把一个函数赋值给一个事件

<body>
<button id="btn">按钮</button>
<script>
var a=document.getElementById("btn");
a.onclick=function demo(){alert("DOMO级事件处理")};
</script>
</body>

执行后点击按钮弹出窗口DOMO级事件处理

若加上a.onclick=null则赋值为空,点击按钮不会弹出窗口

它的弊端是如果同时赋值多个a.onclick则前面的事件会被覆盖只弹出最后一个窗口

3.DOMO2级事件处理

addEventListener("事件名",事件函数,"布尔值(可忽略)")

true为事件冒泡

false为事件捕获

现在一般不再使用布尔值,因为多数情况下采取事件冒泡

removeEventListener移除该事件

<body>
<button id="btn">按钮</button>
<script>
var a=document.getElementById("btn").addEventListener("click",function demo(){alert("DOMO二级事件处理")});
</script>
</body>

弹出窗口DOMO二级事件处理

<body>
<button id="btn">按钮</button>
<script>
var a=document.getElementById("btn");
a.addEventListener("click",demo1);
a.addEventListener("click",demo2);
a.addEventListener("click",demo3);
function demo1(){
    alert("DOMO二级处理事件1");
}
function demo2(){
    alert("DOMO二级处理事件2");
}
function demo3(){
    alert("DOMO二级处理事件3");
}
</script>
</body>

多个窗口依次弹出也不会被覆盖,所以DOMO二级事件处理使用最为普遍,可用removeEventListener(“事件名”,事件函数名)移除掉某一事件

二、事件对象

1.事件对象:

在触发一个DOMO事件时都会产生一个对象

2.事件对象event:

(1)type:获取事件的类型

<body>
<button id="btn">按钮</button>
<script>
var a=document.getElementById("btn");
a.addEventListener("click",demo1);
function demo1(e){
    alert(e.type);
}
</script>
</body>

弹出窗口click,表示这个事件的类型是click事件

(2)target:获取事件的目标

<body>
<button id="btn">按钮</button>
<script>
var a=document.getElementById("btn");
a.addEventListener("click",demo1);
function demo1(e){
    alert(e.target);
}
</script>
</body>

弹出窗口

表示事件的目标是button元素

(3)stopPropagation():阻止事件的冒泡

<body>
<div id="div">
    <button id="btn">按钮</button>
</div>
<script>
    document.getElementById("btn").addEventListener("click",demo1);
    document.getElementById("div").addEventListener("click",demo2);
    function demo1(e){
        alert(e.target);
    }
    function demo2(r){
        alert(r.type);
    }
</script>
</body>

执行后先弹出目标button元素后弹出类型click,由此可知这是事件冒泡,从最根本的元素触发,如果我们不想要事件冒泡,可以采取stopPropagation

<body>
<div id="div">
    <button id="btn">按钮</button>
</div>
<script>
    document.getElementById("btn").addEventListener("click",demo1);
    document.getElementById("div").addEventListener("click",demo2);
    function demo1(e){
        alert(e.target);
        e.stopPropagation();
    }
    function demo2(r){
        alert(r.type);
    }

</script>
</body>

需要注意的是stoPropagation应放在最根本元素的函数里,这样调用才会阻止事件冒泡

(4)preventDefault():阻止事件的默认行为()

<body>
<div id="div">
    <button id="btn">按钮</button>
    <a href="http://baidu.com" id="aid">baidu</a>
</div>
<script>
    document.getElementById("btn").addEventListener("click",demo1);
    document.getElementById("div").addEventListener("click",demo2);
    document.getElementById("aid").addEventListener("click",demo3);
    function demo1(e){
        alert(e.target);

    }
    function demo2(r){
        alert(r.type);
    }
function demo3(q){

    q.preventDefault();
}
</script>
</body>

执行后点击baidu不会弹出窗口也不会跳转页面,因为preventDefault把它的默认行为阻止了

时间: 2024-08-05 07:56:56

JS事件处理和事件对象的相关文章

js事件处理、事件对象

事件类型分类: 1 添加在html结构中的事件 <div id="div1" onclick="alert('append click event in html')"> </div> 点击div1之后弹出 append click event in html:其实在html结构中添加的事件也属于dom0级事件. 2 dom0级事件处理 <div id="div1"> </div> <scri

js跨浏览器事件对象、事件处理程序

项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节点.事件名.事件处理函数 addHanler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false);//这里一个参数为false意为在事件冒

JS中的事件(对象,冒泡,委托,绑定)

- 事件,是文档或浏览器窗口中发生的一些特定的交互瞬间,JS与HTML之间的交互是通过事件实现的 对于web应用来说,有下面这些代表性事件:点击事件,鼠标移动,按下键盘等等 - 事件,是用户和浏览器之间的交互行为 我们可以在事件对应的属性中设置一些js代码,当事件被触发时,这些代码会执行 文档的加载: 浏览器在加载一个页面时,是按照自上而下的顺序加载的, 读取到一行就运行一行,在代码执行时,页面还没有加载 将js代码编写到页面的下面,确保页面加载完毕以后再执行js代码 window.onload

js的event事件对象汇总

JavaScript事件对象是浏览器默认传入的,但是对于浏览器的兼容问题,我们需要对事件对象进行兼容.但是jQuery已经帮我们解决了所有兼容性的问题,并且给我们添加了很多有用的方法.已经是比较历史的问题了,给大家提供参考.1.event.target 获取绑定事件的DOM元素2.event.type 获取事件的类型3.event.data 获取事件中传递的数据4.event.pagX/pagY 获取根据页面原点的X,Y值5.event.screenX/screenY 获取根据显示器窗口的X,Y

js常用的事件对象

事件源对象  event.srcElement.tagName  event.srcElement.type 捕获释放  event.srcElement.setCapture();   event.srcElement.releaseCapture(); 事件按键  event.keyCode  event.shiftKey  event.altKey  event.ctrlKey 事件返回值  event.returnValue 鼠标位置  event.x  event.y 窗体活动元素 

jquery的click事件对象试解

在写这篇文档的时候,我并没有深入的去了解jquery的事件对象是什么样的构造,不过以我以往的经验,相信能说道说道,并且可能有百分之八十是正确的,所以我并不建议这篇文档具备一定的权威性,不过可以当成饭后茶点,稍微品味一番,看看我是如何理解这个对象的.当然这之前我肯定是了解了js原生的事件对象,否则也不会突然想发表一篇jquery的. 我们一般通过访问click事件的事件处理函数的第一个参数来访问这个事件对象,也就是人们常说的event对象,下面来看一下javascript原生的事件对象(chrom

从零开始学习jQuery (五) 事件与事件对象

原文:从零开始学习jQuery (五) 事件与事件对象 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQuer

JS DOM基础 事件概述 事件流 事件处理方法 添加监听器 事件类型 事件对象 事件委托

一.事件概述 事件是什么? 在我们的生活中,都会接触到事件这样一个概念,它通常通过描述发生这件事的时间.地点.人物,发生了什么来进行概括. 同样的在javascript也有这样的一个的东西------事件. 页面上发生的事件:鼠标移动.点击.滚动等等. 事件描述了页面上发生的事情,通常它有以下三个要素组成: 事件源:触发事件的元素 事件类型:事件的触发方式(例如鼠标点击或键盘点击) 事件处理程序(事件监听器):事件触发后要执行的代码(函数形式) Javascript 使我们可以动态的去操作一个页

JS 事件(3)——事件对象

事件对象 在触发DOM节点上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息. DOM中的事件对象 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>事件对象</title> 6 </head> 7 <body> 8 <div id="box"&