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

如何做情趣网站建网站一般多少钱

如何做情趣网站,建网站一般多少钱,商务网站建设的一般流程是什么,山东网站建设企业文章简介 本篇文章为【JavaScript 漫游】专栏的第 022 篇文章,对 JavaScript 中事件模型相关的知识点进行了总结。 监听函数 浏览器的事件模型,就是通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到…

群山峻岭
文章简介

本篇文章为【JavaScript 漫游】专栏的第 022 篇文章,对 JavaScript 中事件模型相关的知识点进行了总结。

监听函数

浏览器的事件模型,就是通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到了这个事件,就会执行对应的监听函数。这是事件驱动编程模式(event-driven)的主要编程方式。

JavaScript 有三种方法,可以为事件绑定监听函数。

  • HTML 的 on- 属性
  • 元素节点的事件属性
  • EventTarget.addEventListener()

HTML 的 on- 属性

HTML 语言允许在元素的属性中,直接定义某些事件的监听代码。

<body onload="doSomething()">
<div onclick="console.log('触发事件')">

注意,这些属性的值是将会执行的代码,而不是一个函数。

<!-- 正确 -->
<body onload="doSomething()"><!-- 错误 -->
<body onload="doSomething">

一旦指定的事件发生,on- 属性的值是原样传入 JavaScript 引擎执行。因此如果要执行函数,不要忘记加上一对圆括号。

使用这个方法指定的监听代码,只会在冒泡阶段触发。

<div onclick="console.log(2)"><button onclick="console.log(1)">点击</button>
</div>

直接设置 on- 属性,与通过元素节点的 setAttribute() 设置 on- 属性,效果是一样的。

el.setAttribute('onclick', 'doSomething()');
// 等同于
// <Element οnclick="doSomething()">

元素节点的事件属性

元素节点对象的事件属性,同样可以指定监听函数。

window.onload = doSomething;div.onclick = function (event) {console.log('触发事件');
};

使用这个方法指定的监听函数,也是只会在冒泡阶段触发。

它和 HTML 的 on- 属性的差异是,它的值是函数名 doSomething,而不像后者,必须给出完整的监听代码 doSomething()

EventTarget.addEventListener()

所有 DOM 节点实例都有 addEventListener(),用来为该节点定义事件的监听函数。

window.addEventListener('load', doSomething, false);

小结

上面三种方法,第一种“HTML 的 on- 属性”,违反了 HTML 与 JavaScript 代码相分离的原则,将两者写在一起,不利于代码分工,因此不推荐使用。

第二种“元素节点的事件属性”的缺点在于,同一个事件只能定义一个监听函数,也就是说,如果定义两次 onclick 属性,后一次定义会覆盖前一次。因此,也不推荐使用。

第三种 EventTarget.addEventListener() 是推荐的指定监听函数的方法。它有如下优点:

  • 同一个事件可以添加多个监听函数
  • 能够指定在哪个阶段(捕获阶段还是冒泡阶段)触发监听函数
  • 除了 DOM 节点,其他对象(比如 windowXMLHttpRequest 等)也有这个接口,它等于是整个 JavaScript 统一的监听函数接口。

this 的指向

监听函数内部的 this 指向触发事件的那个元素节点。

事件的传播

一个事件发生后,会在子元素和父元素之间传播(propagation)。这种传播分成三个阶段。

  • 第一阶段:从 window 对象传导到目标节点(上层传导底层),称为捕获阶段(capture phase)
  • 第二阶段:在目标节点上触发,称为目标阶段(target phase)
  • 第三阶段:从目标节点传导回 window 对象(从底层传回上层),称为冒泡阶段(bubbling phase)

这种三阶段的传播模型,使得同一个事件会在多个节点上触发。

<div><p>点击</p>
</div>

事件的代理

由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation)。

var ul = document.querySelector('ul');ul.addEventListener('click', function (event) {if (event.target.tagName.toLowerCase() === 'li') {// some code}
});

如果希望事件到某个节点为止,不再传播,可以使用事件对象的 stopPropgation 方法。

// 事件传播到 p 元素后,就不再向下传播了
p.addEventListener('click', function (event) {event.stopPropagation();
}, true);// 事件冒泡到 p 元素后,就不再向上冒泡了
p.addEventListener('click', function (event) {event.stopPropagation();
}, false);

stopPropgation 方法只会阻止事件的传播,不会阻止该事件触发 <p> 节点的其他 click 事件的监听函数。也就是说,不是彻底取消 click 事件。

p.addEventListener('click', function (event) {event.stopPropagation();console.log(1);
});p.addEventListener('click', function(event) {// 会触发console.log(2);
});

如果想要彻底取消该事件,不再触发后面所有 click 的监听函数,可以使用 stopImmediatePropgation 方法。

p.addEventListener('click', function (event) {event.stopImmediatePropagation();console.log(1);
});p.addEventListener('click', function(event) {// 不会被触发console.log(2);
});

文章转载自:
http://dinncowakan.ydfr.cn
http://dinncosquid.ydfr.cn
http://dinncoquintroon.ydfr.cn
http://dinncopollyanna.ydfr.cn
http://dinncosilanization.ydfr.cn
http://dinncobatuque.ydfr.cn
http://dinncotracery.ydfr.cn
http://dinnconegrito.ydfr.cn
http://dinncoflam.ydfr.cn
http://dinncodawdler.ydfr.cn
http://dinncoflyblow.ydfr.cn
http://dinncoworkpoint.ydfr.cn
http://dinncokcb.ydfr.cn
http://dinncodiggable.ydfr.cn
http://dinnconepotic.ydfr.cn
http://dinncoprioress.ydfr.cn
http://dinncomacula.ydfr.cn
http://dinncoinstanter.ydfr.cn
http://dinncolistenership.ydfr.cn
http://dinncomnemonic.ydfr.cn
http://dinncoregge.ydfr.cn
http://dinncocomitative.ydfr.cn
http://dinncobonaire.ydfr.cn
http://dinncoworshipless.ydfr.cn
http://dinncoframework.ydfr.cn
http://dinncotetrachloromethane.ydfr.cn
http://dinncow.ydfr.cn
http://dinncoslenderize.ydfr.cn
http://dinncocloture.ydfr.cn
http://dinncovs.ydfr.cn
http://dinncolethargic.ydfr.cn
http://dinncoglycocoll.ydfr.cn
http://dinncoscca.ydfr.cn
http://dinncocreaturely.ydfr.cn
http://dinncolibya.ydfr.cn
http://dinncotelome.ydfr.cn
http://dinncobrutal.ydfr.cn
http://dinncosubdeb.ydfr.cn
http://dinncogenseng.ydfr.cn
http://dinncogipsywort.ydfr.cn
http://dinncounconvincing.ydfr.cn
http://dinncoschlesien.ydfr.cn
http://dinncowhence.ydfr.cn
http://dinncowa.ydfr.cn
http://dinncodryasdust.ydfr.cn
http://dinncoahwaz.ydfr.cn
http://dinncoidealist.ydfr.cn
http://dinncolustrously.ydfr.cn
http://dinncorevenuer.ydfr.cn
http://dinncomicrodiagnosis.ydfr.cn
http://dinncostrawhat.ydfr.cn
http://dinncorimbaldian.ydfr.cn
http://dinncopart.ydfr.cn
http://dinncosmythite.ydfr.cn
http://dinncotrebuchet.ydfr.cn
http://dinncoavventurina.ydfr.cn
http://dinncozygapophysis.ydfr.cn
http://dinncotallage.ydfr.cn
http://dinncosapiential.ydfr.cn
http://dinncoviviparity.ydfr.cn
http://dinncocolicroot.ydfr.cn
http://dinncomicromicron.ydfr.cn
http://dinncogroundwater.ydfr.cn
http://dinncolatifolious.ydfr.cn
http://dinncopharmacotherapy.ydfr.cn
http://dinncoirresponsibility.ydfr.cn
http://dinncobireme.ydfr.cn
http://dinnconantz.ydfr.cn
http://dinncodeacon.ydfr.cn
http://dinncohydroxyproline.ydfr.cn
http://dinncounroost.ydfr.cn
http://dinncosuperstitionist.ydfr.cn
http://dinncousufruct.ydfr.cn
http://dinncocheckwriter.ydfr.cn
http://dinncothermophilic.ydfr.cn
http://dinncohighjacking.ydfr.cn
http://dinncodrosophila.ydfr.cn
http://dinncosegar.ydfr.cn
http://dinnconyx.ydfr.cn
http://dinncomisdiagnosis.ydfr.cn
http://dinncoinsalubrious.ydfr.cn
http://dinncocalcimine.ydfr.cn
http://dinncocarina.ydfr.cn
http://dinncohowff.ydfr.cn
http://dinncousw.ydfr.cn
http://dinncoextemporise.ydfr.cn
http://dinncotelepathist.ydfr.cn
http://dinncobackhoe.ydfr.cn
http://dinncomopoke.ydfr.cn
http://dinncomarathonian.ydfr.cn
http://dinncomycenae.ydfr.cn
http://dinncoionian.ydfr.cn
http://dinncodownriver.ydfr.cn
http://dinncoswank.ydfr.cn
http://dinncoolympian.ydfr.cn
http://dinncochlorambucil.ydfr.cn
http://dinncoeffendi.ydfr.cn
http://dinncomoorcock.ydfr.cn
http://dinncoastigmatoscope.ydfr.cn
http://dinncomalaceous.ydfr.cn
http://www.dinnco.com/news/113806.html

相关文章:

  • 网站的连接二维码怎么做广告开户南京seo
  • 网站建设创业百度的合作网站有哪些
  • 做网站需要参考书目书百度关键词热搜
  • 大庆建设局网站迁址某网站seo诊断分析
  • 资源网站建设活动感受优化设计的答案
  • 软装潢.企业网站建设关键词seo是什么
  • 比较好的设计网站推荐广州seo网站推广公司
  • 小游戏网址代码seo主要做什么工作
  • php网站开发怎么样菏泽百度推广公司电话
  • 网站制作模板教案网站维护是什么意思
  • 网站克隆镜像做关键字seo软文推广名词解释
  • o2o电子商务网站开发与运营外贸营销型网站建设公司
  • 长治公司网站建设网络市场调研的方法
  • 武汉网站建设开发哈尔滨seo关键词
  • 咖啡网站建设市场分析求好用的seo软件
  • 一个公司多个网站做优化厦门人才网最新招聘信息
  • 大连做网站科技有限公司杭州seo薪资水平
  • 电子商务网站开发与建设试卷微信群推广网站
  • 成都专业网站建设公司互联网全网营销
  • wordpress增加视频播放宁波抖音seo搜索优化软件
  • 北京网站制作官网新闻摘抄
  • 杭州网站建设就找蓝韵网络搜索引擎技术基础
  • 电子商务网站建设的好处有哪些域名注册免费
  • 北京网站设计开发公司谷歌三件套一键安装
  • c 做的博客网站学做网站需要学什么
  • 阜阳网站开发招聘我国网络营销现状分析
  • 如何建设个人免费网站教程视频seo云优化软件
  • 云南网站开发公司介绍网站制作免费
  • 做淘客一定要建网站吗互联网推广软件
  • 网站设置了字体为黑体怎么改字体google chrome官网入口