![]() |
1
23
您需要在每次传递循环时创建一个新的变量,以便在为事件处理程序创建的闭包中捕获它。 但是,仅仅将变量声明移动到循环中并不能实现这一点,因为 JavaScript doesn't introduce a new scope for arbitrary blocks . 强制引入新作用域的一个简单方法是使用另一个匿名函数:
As Jason suggests
实际上,您可以使用jquery的内置功能来清理这个问题。
|
![]() |
2
17
这里发生的是异常函数正在形成一个闭包,并将它们的外部作用域与之结合。这意味着当您在异常函数中引用curtab时,当事件处理程序运行该函数时,它将查找 现在的 外部作用域中curtab的值。这将是您上次分配给curtab的内容。(不是绑定函数时分配的内容) 你需要做的是改变这一点:
对此:
这将把curtab的值复制到外部函数的作用域中,内部函数将使用该作用域。这种复制发生在您将内部函数绑定到事件处理程序的同时,因此“mylocalvariable”反映了当时curtab的值。然后,下次在循环中,将创建一个具有新作用域的新外部函数,并将curtab的下一个值复制到该函数中。 Shog9的回答基本上完成了相同的事情,但他的代码更为简朴。 这有点复杂,但如果你考虑一下就有意义了。封口很奇怪。 编辑:哎呀,忘记返回内部函数了。固定的。 |
![]() |
3
1
我认为你让事情变得比需要的更复杂了。如果您所做的只是在鼠标悬停/悬停时指定滑动效果,请尝试 hover 使用jquery效果。
如果您发布了完整的HTML,我可以告诉您具体的方法:) |
![]() |
4
1
您可以将变量的值放入一个不存在的标记中,稍后您可以从中读取它们。此代码段是循环体的一部分:
|
![]() |
Tryer · 计算不同类别对象的数量 7 年前 |
![]() |
Chris · 对传递值的工作原理可能存在误解 7 年前 |
![]() |
Humam Helfawi · 按价值或参考传递容器 9 年前 |
|
Ethan · VBA:将值传递给属性调用 10 年前 |
![]() |
g4ur4v · 将bool数组传递给函数 11 年前 |