在递归中传递JS函数中的对象

时间:2013-06-18 08:46:13

标签: javascript jquery html recursion

我目前正在研究这个问题:

  • 我有一个div“out”和一个“in”按钮。
  • 点击按钮,创建div“extra”和按钮“extra_b”
  • 同时,“out”和“in”hide。
  • 点击“extra_b”,“out”和“in”, DELETE “extra”和按钮“extra_b”

以下是示例:FIDDLE

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

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

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

function add(objectIn){
}

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

非常感谢!

2 个答案:

答案 0 :(得分:0)

这是common problem is JavaScript。 当您绑定onclick事件时,您没有使用i的当前值,而是在点击发生时,使用i的最后一个值。

所以你必须这样做:

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

答案 1 :(得分:0)

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

inner.onclick = $.proxy(add, window, outer[i]);