为了账号安全,请及时绑定邮箱和手机立即绑定

请帮忙解释一段代码(js阻止冒泡传递)

请帮忙解释一段代码(js阻止冒泡传递)

undertale 2016-09-26 01:38:58
这段代码有点看不懂,主要是画线的三个地方 第一个,section.length指的是多少?是4吗?是点击我!的长度吗? 第二个,函数传入的event参数,应该就是onclick吧?如果这括号里不写event,写空或者随便写个字符(例如e)可以吗? 第三个,this.classname指的是innermost,event.target.classname指的是regular吗? 还有一个疑问,这段代码应该是this.classname转换成了regular,然后stop了,阻止了冒泡传递,但怎么转换成regular的,这个过程有点不懂啊
查看完整描述

7 回答

已采纳
?
人生还有多少个二十年

TA贡献3条经验 获得超1个赞

解答1:答案为3(你脚本里的第一句是将所有section标签节点获取并保存在变量sections中,代码中出现了三个标签,所有sections的length(长度)应该是3)

解答2:不是onclick,不能为空,可以用其他标识符代替,如e,但标识符不能是随便取的。(当你点击了section标签所有的区域时,会触发onclick事件,此时事件的处理函数会接收到一个参数,即事件对象,由于在函数中你要用到该对象,所以你要给定一个参数去接收它,该参数可以命名为event或者e,或者用其它可读性较强的标识符

解答3:this.classname是变化的(依次为"innermost","regular"),event.target.classname是唯一的("innermost")。(首先,当你点击了“点击我!”的位置时,触发绑定在类名为innermost的section标签的onclick事件,然后开始冒泡,正常的话会依次触发regular,outermost上的事件,而你在它冒泡到regular时,就阻止了它继续冒泡,因而无法触发outermost上的的事件,)


如果我说了这么多,你还不明白,你也不用灰心,多看书,多看视频,慢慢就会懂了。

给你推荐一下视频:http://www.imooc.com/learn/138



查看完整回答
1 反对 回复 2016-09-26
?
微积分2016

TA贡献53条经验 获得超69个赞


看书《JavaScript高级程序设计》第三版

查看完整回答
1 反对 回复 2016-09-26
?
qq_安逸_4

TA贡献12条经验 获得超5个赞

事件冒泡:是触发当前事件,会使得其外层事件被触发,知道冒泡到document,。

本例中如果regular类标签有个点击事件弹出“regular”,当innermost里的事件被触发后,会使得reguler里的点击事件触发,从而导致弹出“regular”

在本例中由于获取了所有<section>标签,赋值给数组sections,所以遍历该数组,即可获取className为regular的节点。

查看完整回答
反对 回复 2016-09-26
?
vone

TA贡献23条经验 获得超2个赞

第三 事件函数中的this代表的是当前冒泡到的对象
event.target指的是最初触发该事件的对象

查看完整回答
反对 回复 2016-09-26
?
vone

TA贡献23条经验 获得超2个赞

第二事件函数传入的参数是当前的事件对象,里边储存的是事件的信息 比如按下的键什么的  名字可以随便输

查看完整回答
反对 回复 2016-09-26
?
vone

TA贡献23条经验 获得超2个赞

第一 length的长度应该是3 是所有匹配标签的长度

查看完整回答
反对 回复 2016-09-26
  • 7 回答
  • 0 关注
  • 1759 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信