当前位置: 首页 > news >正文

专业零基础网站建设教学公司开发一个小程序商城多少钱

专业零基础网站建设教学公司,开发一个小程序商城多少钱,陈木胜拍完怒火重案了吗,费县住房和城乡建设局网站说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…
  • 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费如需要项目实战或者是体系化资源,文末名片加V!
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。
  • 荣誉:2022年度博客之星Top4、2023年度超级个体得主、谷歌与亚马逊开发者大会特约speaker全栈领域优质创作者

  • 🏆 白宝书系列
    • 🏅 启示录 - 攻城狮的自我修养
    • 🏅 Python全栈白宝书
    • 🏅 ChatGPT实践指南白宝书
    • 🏅 产品思维训练白宝书
    • 🏅 全域运营实战白宝书
    • 🏅 大前端全栈架构白宝书


文章目录

  • ⭐ 事件传播
  • ⭐ addEventListener()方法。

⭐ 事件传播

先来思考一个问题:

当页面的盒子有嵌套时,如果盒子都设置了同样的事件监听,那么事件监听触发的顺序是什么样的呢?比如下面图中,三个盒子都设置了onclick事件监听,当鼠标点击最内侧的盒子时,会触发三个盒子的onclick事件,那这三个事件触发的顺序是怎样的?

image-20230419145411684

我们编写代码来验证一下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#box1 {width: 142px;height: 142px;border: 1px solid #000;padding: 20px;}#box2 {width: 102px;height: 102px;border: 1px solid #000;padding: 20px;}#box3 {width: 100px;height: 100px;border: 1px solid #000;}</style>
</head>
<body><div id="box1"><div id="box2"><div id="box3"></div></div></div><script>var oBox1 = document.getElementById('box1');var oBox2 = document.getElementById('box2');var oBox3 = document.getElementById('box3');oBox1.onclick = function () {console.log('鼠标单击box1');};oBox2.onclick = function () {console.log('鼠标单击box2');};oBox3.onclick = function () {console.log('鼠标单击box3');};</script>
</body>
</html>

image-20230419160420907

这种从内到外触发事件的过程就是事件传播的过程。

但事实上,真实的事件传播并不仅仅是由内到外的,而是先从外到内,然后再从内到外,那为什么结果只有从内到外的呢?这是因为onxxx事件监听只能监听后面的一段过程,即从内到外的过程。

**事件的传播:**DOM规定事件传播的方向是先从外到内,再从内到外

从外到内的过程为捕获阶段(capturing phase),从内到外的过程为冒泡阶段(Bubbing phase)

那么问题来了,如何才能监听到捕获阶段呢?这就用到第二种事件监听方法——addEventListener()方法。

在DOM更新过程中,事件监听分成两个级别:DOM0级事件监听和DOM2级事件监听。一开始只有DOM0级事件监听,只能监听到冒泡阶段;在DOM2中新增加了addEventListener()方法,可以监听到捕获和冒泡两个阶段。之所以没有DOM1级,是因为DOM1中没有对事件监听的方法进行更新修改。

⭐ addEventListener()方法。

addEventListener()方法的示例代码:

oBox.addEventListener('click', function(){   //click表示鼠标单击//事件处理函数代码
}, true);//true表示监听捕获阶段,false表示监听冒泡阶段

上面的例子中,用addEventListener()方法监听整个事件传播的过程,代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#box1 {width: 142px;height: 142px;border: 1px solid #000;padding: 20px;}#box2 {width: 102px;height: 102px;border: 1px solid #000;padding: 20px;}#box3 {width: 100px;height: 100px;border: 1px solid #000;}</style>
</head>
<body><div id="box1"><div id="box2"><div id="box3"></div></div></div><script>var oBox1 = document.getElementById('box1');var oBox2 = document.getElementById('box2');var oBox3 = document.getElementById('box3');oBox1.addEventListener('click', function () {console.log('我是box1的捕获阶段');}, true);oBox2.addEventListener('click', function () {console.log('我是box2的捕获阶段');}, true);oBox3.addEventListener('click', function () {console.log('我是box3的捕获阶段');}, true);oBox1.addEventListener('click', function () {console.log('我是box1的冒泡阶段');}, false);oBox2.addEventListener('click', function () {console.log('我是box2的冒泡阶段');}, false);oBox3.addEventListener('click', function () {console.log('我是box3的冒泡阶段');}, false);</script>
</body>
</html>

image-20230419191821833

上述代码中,需要注意的是,触发事件监听的顺序跟代码书写的顺序没有关系的,新手可能会误以为两者有关系,我们把捕获和冒泡的代码顺序调一下也不会影响事件传播顺序:

image-20230419194630136

还需注意的是,如果给元素设置相同的两个或多个同名事件时,DOM0级的事件监听后面写的会覆盖先写的;而DOM2级的会按顺序执行。示例代码:

<body><div id="box1"><div id="box2"><div id="box3"></div></div></div><script>var oBox1 = document.getElementById('box1');var oBox2 = document.getElementById('box2');var oBox3 = document.getElementById('box3');oBox2.onclick = function () {   //这个事件监听会被后面的覆盖console.log('A');};oBox2.onclick = function () {console.log('B');};oBox2.addEventListener('click', function () {   //不会被覆盖console.log('C');},true)oBox2.addEventListener('click', function () {   //不会被覆盖console.log('D');},true)</script>
</body>

image-20230419195626656

http://www.yayakq.cn/news/543372/

相关文章:

  • 爱最好网站建设建站开发工具
  • 成都网站建设费用王烨萌 俄罗斯
  • 怎样维护公司网站贸易有限公司
  • 各大网站的域名是什么原因网站建设图文片
  • 纺织网站建设方案软件开发学校
  • 网站建设公司新闻上海短视频推广公司
  • 建设银行征信中心个人信用查询官方网站kindeditor代码高亮 wordpress
  • 多个网站能否统一做等保如何对产品进行推广
  • 个人网站的订单网站建设那个好
  • 网站建设广金手指六六十四东莞网站建设it s
  • 什么样的网站可以做外链做网站生成二维码
  • 河北省住房城乡建设局网站首页网站门户
  • 如何做垂直门户网站个人网站名称怎么写
  • 百度收录正常网站流量下降网站资源建设方案
  • 什么网站可以做图赚钱吗关于电商运营的知识点
  • 手机导航网站模板网站用的什么字体
  • 做境外的网站网站违法么网站的建设与管理的心得体会
  • 网站投票链接怎么做的推广平台有哪些适用于广告
  • 怎么网站怎么建设框架买了一台配置强悍的电脑怎么做网站服务器
  • 网站建设方案 filetype doc国内国际时事写实记录50字配图片
  • 知名营销类网站做兽药网站用什么图片好
  • 微网站开发北京建设局网站漠河
  • windows7建设网站大学生app开发经费预算
  • 网站怎么做动态切图常用网站开发语言优缺点
  • 视频网站用什么做的好处上海专业的网站建设公司排名
  • 好用的cms网站做响应式网站的框架
  • 南宁企业网站建站模板网站开发毕设文献
  • 红酒集团网站建设网站建设可用性的五个方面
  • 用jsp做的网站有哪些网页制造与网站建设论文
  • 带数据库网站设计房地产平面设计网站