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

Javascript 在递归中传递JS函数中的对象,javascript,jquery,html,recursion,Javascript,Jquery,Html,Recursion,我目前正在做这个: 我有一个div“out”和一个按钮“in” 单击按钮,创建div“extra”和按钮“extra_b” 同时,“向外”和“向内”隐藏 单击“额外”按钮,将显示“退出”和“加入”,然后删除额外按钮和“额外”按钮 以下是示例: 它无法工作,在我检查控制台后,它可能会告诉我: inner.onclick=function(){ add(outer[i]) }; 无法将当前输出元素的对象正确传递给函数: function add(objectIn){ } 你能告诉我如何在递归

我目前正在做这个:

  • 我有一个div“out”和一个按钮“in”
  • 单击按钮,创建div“extra”和按钮“extra_b”
  • 同时,“向外”和“向内”隐藏
  • 单击“额外”按钮,将显示“退出”和“加入”,然后删除额外按钮和“额外”按钮
以下是示例:

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

inner.onclick=function(){ add(outer[i]) };
无法将当前输出元素的对象正确传递给函数:

function add(objectIn){
}
你能告诉我如何在递归中把元素传递给函数吗?如何修改我当前的代码使其正确运行

非常感谢

这是一个问题。 当您绑定onclick事件时,您没有使用
i
的当前值,而是在单击时使用
i
的最后一个值

所以你必须做:


internal.onclick=(函数(i){return function(){add(outer[i])})(i);

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


@当然是Kuraininazumayes@Darklizardnwm in blind:)@Quentin可能没有。我的递归用于将函数应用于所有主要元素。多谢!!还有代码中括号上的小错误:inner.onclick=function(i){return function(){add(outer[i])}(i);
inner.onclick = $.proxy(add, window, outer[i]);