![]() |
1
4
JavaScript没有块作用域,所以你在for循环中声明的那些变量每次迭代都会改变它们的值,所有这些函数都引用相同的变量。诀窍是在for循环中创建一个新的函数作用域,以便在迭代过程中绑定您声明的变量。 你可以通过在循环中执行匿名函数来实现这一点:
按照以前的方式,所有函数都在相同的变量引用上关闭,因此使用最后一个值,而不是创建函数时的值。使用函数作用域将使其按预期运行。 |
![]() |
2
1
你的问题是 悬停事件 发生在执行方法的范围之外。因此,当悬停执行您的 积极的 变量已经遍历了整个集合,并处于最后一个元素的活动状态。所以你看到这个问题是因为最后一个日志是一个事件,它超出了范围,而另外两个在循环中在范围内。 试试这个:
这实际上会将“active”值存储在DOM元素中,以便在作用域中访问它。 |
![]() |
3
0
我绞尽脑汁,因为这是一个奇怪的问题,但我稍微重构了这个函数,可能会有用(哦,与此同时,有更聪明的人回答了):
|
![]() |
OREO · 如何在不实际单击复选框的情况下选中它 1 年前 |
![]() |
Dan · 在元素外部设置html点击处理程序点击后立即触发 1 年前 |
![]() |
Mero · Svelte在父事件调用上调用新的嵌套事件处理程序 2 年前 |
|
iorice · usercontrol dll中的组件事件 2 年前 |
![]() |
Awin · 点击事件功能不适用于Vue组件 2 年前 |
|
Kiwi · 将可共享的自定义数据添加到事件MS图形api 2 年前 |