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]);