在JS函数中递归传递对象

Passing objects in JS Function in recursion

本文关键字:对象 递归 JS 函数      更新时间:2023-09-26

我正在做这件事:

  • 我有一个div "out"和一个按钮。
  • 点击按钮,创建div "extra"and button "extra_b"
  • 同时,"out"answers"in"隐藏。
  • 点击"extra_b", "out"answers"in"DELETE extra"and button "extra_b"

示例如下:

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

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

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

function add(objectIn){
}

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

非常感谢!

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

所以你必须这样做:

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

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

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