JavaScript HTML DOM ---事件监听器

JavaScript HTML DOM 事件监听器

addEventListener()方法

addEventListener() 方法为指定元素指定事件处理程序。

addEventListener() 方法为元素附加事件处理程序而不会覆盖已有的事件处理程序。

  • 您能够向一个元素添加多个事件处理程序。

  • 您能够向一个元素添加多个相同类型的事件处理程序,例如两个 “click” 事件。

  • 您能够向任何 DOM 对象添加事件处理程序而非仅仅 HTML 元素,例如 window 对象。

addEventListener() 方法使我们更容易控制事件如何对冒泡作出反应。

当使用 addEventListener() 方法时,JavaScript 与 HTML 标记是分隔的,已达到更佳的可读性;
即使在不控制 HTML 标记时也允许您添加事件监听器。

  • 您能够通过使用 removeEventListener() 方法轻松地删除事件监听器。
    语法
element.addEventListener(event, function, useCapture);

参数:

  • 第一个参数是事件的类型(比如 “click” 或 “mousedown”)。

  • 第二个参数是当事件发生时我们需要调用的函数。

  • 第三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

注意:请勿对事件使用 “on” 前缀;请使用 “click” 代替 “onclick”。

向元素添加事件处理程序

实例
当用户点击某个元素时提示 “Hello World!”

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript addEventListener()</h1>

<p>此示例使用 addEventListener() 方法将 click 事件附加到按钮。</p>

<button id="myBtn">试一试</button>

<script>
document.getElementById("myBtn").addEventListener("click", function() {
  alert("Hello World!");
});
</script>

</body>
</html>


//您也可以引用外部“命名”函数:
element.addEventListener("click", myFunction);

function myFunction() {
    alert ("Hello World!");
}

向相同的元素添加多个事件处理程序

addEventListener() 方法允许您向相同元素添加多个事件,同时不覆盖已有事件:

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

向Window对象添加事件处理程序

addEventListener() 允许您将事件监听器添加到任何 HTML DOM 对象上,比如 HTML 元素HTML 对象window 对象其他支持事件的对象,比如 xmlHttpRequest 对象。

实例
添加当用户调整窗口大小时触发的事件监听器:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

传递参数

当传递参数值时,请以参数形式使用调用指定函数的“匿名函数”:

实例
element.addEventListener(“click”, function(){ myFunction(p1, p2); });

事件冒泡还是事件捕获?

  • 在 HTML DOM 中有两种事件传播的方法:冒泡和捕获。

事件传播是一种定义当发生事件时元素次序的方法。假如

元素内有一个

,然后用户点击了这个


元素,应该首先处理哪个元素“click”事件?

- 在冒泡中,最内侧元素的事件会首先被处理,然后是更外侧的:首先处理 <p> 元素的点击事件,然后是 <div> 元素的点击事件。

- 在捕获中,最外侧元素的事件会首先被处理,然后是更内侧的:首先处理 <div> 元素的点击事件,然后是 <p> 元素的点击事件。

addEventListener() 方法中,你能够通过使用“useCapture”参数来规定传播类型:

addEventListener(event, function, useCapture);

**默认值是 false,将使用冒泡传播,**如果该值设置为 true,则事件使用捕获传播。

实例

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

removeEventListener() 方法

removeEventListener() 方法会删除已通过 addEventListener() 方法附加的事件处理程序:

实例

element.removeEventListener("mousemove", myFunction);

浏览器支持

表格中的数字规定了完全支持这些方法的首个浏览器版本。
在这里插入图片描述
**注释:**IE 8、Opera 6.0 及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。不过,对于这些特殊的浏览器版本,您可以使用 attachEvent() 方法向元素添加事件处理程序,并由 detachEvent() 方法删除:

element.attachEvent(event, function);
element.detachEvent(event, function);

实例
跨浏览器解决方案:

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // 针对主流浏览器,除了 IE 8 及更正版本
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // 针对 IE 8 及更早版本
    x.attachEvent("onclick", myFunction);
} 
锐捷交换机支持LACP(Link Aggregation Control Protocol,链路聚合控制协议)用于实现链路聚合,提高网络带宽和可靠性。 配置LACP链路聚合的步骤如下: 1. 首先,确保交换机上的所有端口均处于相同的VLAN中,并且链路聚合的成员端口上没有任何配置。 2. 登录到交换机的管理界面,在端口聚合配置界面找到需要进行链路聚合端口组。 3. 选择要进行链路聚合端口组,点击添加按钮,选择需要加入链路聚合组的端口。 4. 在链路聚合配置界面的链路聚合配置项中,选择使用LACP作为链路聚合控制协议。 5.配置LACP的模式,可以选择主动模式、被动模式或者静态模式。 6. 配置链路聚合的方式,可以选择使用链路聚合组的MAC地址和IP地址进行负载均衡,也可以选择使用源目地址、源目端口或者协议类型进行负载均衡。 7. 配置链路聚合组的优先级,可以根据实际情况设定。 8. 配置链路聚合组的其他参数,如链路状态、链路监测时间间隔等。 9. 确认配置的正确性并保存设置。 完成以上步骤后,交换机将根据LACP协议进行链路聚合,将多个物理链路组合成一个逻辑链路,提高了带宽和可靠性。在链路聚合组中,其中一个端口将被选为主端口,负责发送和接收数据,其他端口为备用端口,在主端口发生故障时切换到备用端口。 请注意,配置LACP链路聚合前,确保网络设备和服务器也支持LACP协议,并按照相应的步骤进行配置,以保证链路聚合的正常工作和互相兼容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值