事件流:事件冒泡,事件捕获,html事件处理,以及DOM0级事件处理程序,和DOM2级事件处理程序

1.事件流:描述的是在页面中接受事件的顺序

2.事件冒泡:

    由最具体的元素接收,然后逐级向上传播至最不具体的元素节点

3.事件捕获

    最不具体的节点先接收事件,到最具体的节点接收


html事件处理有个很大的缺点:修改一处就要同时修改两处,比如函数名称被修改了,那么在HTML文档中的onclick事件名称也必须要被修改掉,这会比较麻烦 可以避免这个问题。就用DOM 0级事件处理。

html事件处理:直接添加到HTML结构中

<button οnclick="demo()">按钮</button>

<!-- <script>
function demo(){
alert("hello 这是html事件处理");//:
}

</script> -->



DOM 0级事件处理程序:把一个函数赋值给一个事件处理程序属性

<button id="btn1">按钮</button>
<script>
var btn1 = document.getElementById('btn1');
btn1.onclick = function (){alert("hello 这是DOM 0级事件处理程序1")};//被覆盖掉
btn1.onclick = null;//清除0级事件处理程序
//DOM 0级事件处理程序的优势是,只需在alert里改动一处就可以了,和HTML文档没关系了
//btn1.onclick = function (){alert("hello 这是DOM 0级事件处理程序2")};
//缺点:多个事件会被覆盖掉,只会显示最后一个事件

</script>


 DOM2级事件处理程序: 语法:addEventListener(“事件名”,“事件处理函数”,“布尔值”);true:事件捕获;false:事件冒泡
<button id="btn1">按钮</button>
<script>
document.getElementById("btn1");
addEventListener("click",demo1);
    addEventListener("click",demo2);
    addEventListener("click",demo3);
function demo1(){alert("这是DOM2级事件处理程序1")}
function demo2(){alert("这是DOM2级事件处理程序2")}
function demo3(){alert("这是DOM2级事件处理程序3")}
//依次执行,不会被覆盖
removeEventListener("click",demo2);//要移除哪个事件,就放入哪个事件的监听参数


</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当一个元素触发了某个事件,该事件会在该元素上进行处理,然后向上冒泡到父元素,一直到达文档根节点。同时,事件也可以被捕获,即从文档根节点一直向下传递到触发事件的元素。这种事件传递方式称为事件流,而DOM2规定了事件流的三个阶段:捕获阶段、目标阶段和冒泡阶段。 以下是一个简单的示例代码: HTML: ``` <div id="outer"> <div id="inner"> Click me! </div> </div> ``` JS: ``` var outer = document.getElementById('outer'); var inner = document.getElementById('inner'); // 添加点击事件监听器,第三个参数为true表示在捕获阶段处理事件 outer.addEventListener('click', function() { console.log('outer capture'); }, true); inner.addEventListener('click', function() { console.log('inner capture'); }, true); inner.addEventListener('click', function() { console.log('inner bubble'); }); outer.addEventListener('click', function() { console.log('outer bubble'); }); ``` 当我们点击“Click me!”时,控制台会输出以下内容: ``` outer capture inner capture inner bubble outer bubble ``` 首先,事件由文档根节点开始,向下传递到outer元素,触发outer元素的捕获阶段事件监听器,输出“outer capture”。接着,事件继续向下传递到inner元素,触发inner元素的捕获阶段事件监听器,输出“inner capture”。然后,事件到达inner元素,触发inner元素的目标阶段事件监听器,输出“inner bubble”。最后,事件向上冒泡到outer元素,触发outer元素的冒泡阶段事件监听器,输出“outer bubble”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值