if语句既执行if里的内容又执行else里的内容??不存在的(事件冒泡)

“窥屏”时,有群友说遇到一个问题,if语句既执行了if里的内容又执行了else里的内容,这怎么可能呢?
这是贴出的代码大概是这个样子:
这里写图片描述
看着这代码貌似没啥问题,但是又没有贴出html,不过不难猜出HTML大概是这个样子:
这里写图片描述
执行后的确是既弹出了1又弹出了0.

仔细看代码里面有个parents方法。首先看一下这个方法是干啥的。
parents方法是在 DOM 树中搜索这些元素的父级元素,也就是说是对DOM树中元素的遍历。

回过头看代码,jQuery中parents寻找的是id为aside下的所有li的父级li元素。yy级的li都有一个父级li元素,而haha级没有父级li元素。
当点击yy级的li时,parents方法先找到yy级的父级li,发现有一个父级li所以弹出1;parents继续向外层遍历,找到haha层的li,发现haha层的li没有父级li元素,于是弹出0。

的确是既弹出1又弹出0,但是这个if是执行了两次。
这就是冒泡事件了。
当点击yy层li时,这个点击事件会像冒泡一样往外层执行。
在这个例子中,造成冒泡事件有以下几个原因:
选择器中li没有明确指出所属树级,这里相当于既给子级加了click事件又给父级加了click事件;

parents(parent)方法会遍历查找元素。

知道是冒泡就好解决啦,直接 return false;或者 event.stopPropagation();

if语句是说一不二的哟~

### 回答1: 可以使用ifelse语句实现排序,但是不是冒泡排序,因为冒泡排序需要比较和交换相邻的元素。使用ifelse语句实现排序的一种常见方法是选择排序,即每次找到未排序部分中最小的元素,然后将其放到已排序部分的末尾。实现过程中需要嵌套多个ifelse语句来进行比较和交换操作。 ### 回答2: 冒泡排序是一种基于比较交换的排序算法,通过相邻元素之间的比较和交换来达到排序的目的。相比之下,if else语句是一种用于条件判断的控制语句,并不能直接用于排序。 冒泡排序的核心思想是将较大或较小的元素逐个交换至正确的位置,而 if else语句没有提供直接的交换操作。如果只使用 if else 语句,无法实现元素的交换,也就无法实现冒泡排序的功能。 因此,不能只使用 if else 语句来代替冒泡排序。冒泡排序通过多轮比较和交换,逐步将未排序的元素交换到正确的位置,实现整个序列的排序。而 if else 语句只能在满足特定条件时执行不同的语句块,无法实现这种多轮比较和交换的操作。 当然,我们可以通过嵌套 if else 语句实现一些简单的排序功能,比如将两个数值进行升序或降序排列。但对于含有多个元素的数组或列表,仅仅用 if else 语句是无法实现完整的排序功能的。 综上所述,冒泡排序与 if else 语句有着不同的功能和应用场景。冒泡排序是一种用于排序的算法,而 if else 语句是一种用于条件判断的控制语句。它们的功能和实现方式不同,因此无法仅通过 if else 语句来代替冒泡排序。 ### 回答3: 冒泡排序是一种简单但低效的排序算法,虽然使用if else语句可以完成某些简单的任务,但是无法直接实现排序功能。冒泡排序需要对元素进行多次的比较和交换,而if else语句只能实现条件判断和控制流程。因此,在不使用冒泡排序的情况下,使用if else语句无法直接达到排序的目的。 在if else语句的基础上,我们可以使用其他排序算法来实现排序功能。例如,我们可以使用快速排序、选择排序、插入排序或归并排序等更高效的算法来对一组数据进行排序。这些算法能够利用循环和递归等方式,通过比较和交换来实现元素的有序排列。 总之,if else语句不能直接用于排序操作,它只能用于简单的条件判断和控制流程。要实现排序功能,需要使用其他更适合的排序算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值