html 如何防止forEach函数同时在对象的每个示例上触发?

wgx48brx  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(108)

当用户将鼠标悬停在一个图标上时,这些菜单就会打开。代码中的pointrout部分工作正常(用户将鼠标悬停在菜单外,菜单关闭,图标返回到初始的非活动状态),但是pointerenter函数会导致所有菜单同时打开,而不管我将鼠标悬停在哪个菜单上。
由于exit事件工作正常,我猜enter事件有问题,导致所有菜单同时打开,但我似乎不能确定它。这不是我第一次使用forEach,所以我猜它是函数内部的一些东西格式不正确。
第一个

n1bvdmb6

n1bvdmb61#

您的js代码正在向事件侦听器内的元素添加事件侦听器。
我拆分了这两个段,在为每个.logobox调用的函数中添加了pointerenterpointerleave的事件侦听器。
然后,我还确保该函数是为父.logoContainer调用的,并且这两个段只负责分别添加和删除active类。由于我更改了传递给该函数的根元素,因此我还显式地为子.logoBox添加/删除了.active类,以便宏菜单也可以翻转/取消翻转。
这是我做的唯一修改,它现在似乎工作正常。
顺便说一句,我还整理了html。
这是一个相当棘手的js方法,我看到在那里使用...和奇怪的是,这些logoslocations函数是这样制作的,接受一个par参数(父),你没有使用。我也确保我使用的功能,以及在您的逻辑,使它有意义。
第一个

相关问题