0

我目前正在做这个:

  • 我有一个 div“out”和一个按钮“in”。
  • 单击按钮,创建 div“extra”和按钮“extra_b”
  • 同时,“出”和“入”隐藏。
  • 单击“extra_b”,出现“out”和“in”,然后删除“extra”和按钮“extra_b”

这是示例:FIDDLE

它无法工作,在我检查控制台后,它可能会告诉我:

inner.onclick=function(){ add(outer[i]) };

无法正确地将当前输出元素的对象传递给函数:

function add(objectIn){
}

你能告诉我如何在递归中将元素传递给函数吗?以及如何修改我当前的代码以使其正常运行?

非常感谢!

4

2 回答 2

0

这是JavaScript 的一个常见问题。当您绑定 onclick 事件时,您不使用当前值,i而是在单击发生时使用最后一个值i

所以你必须这样做:

inner.onclick= (function(i){ return function(){ add(outer[i]) })(i);

于 2013-06-18T08:49:37.097 回答
0

你可以像 Darhazer 建议的那样创建一个新的闭包,或者如果你不介意使用 jQuery,你可以使用 jQuery.proxy():

inner.onclick = $.proxy(add, window, outer[i]);
于 2013-06-18T09:06:32.353 回答