在JS函数中递归传递对象
Passing objects in JS Function in recursion
我正在做这件事:
- 我有一个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]);
相关文章:
- 如何递归地获取嵌套对象中所有子对象的列表
- 将jQuery对象传递到setTimeout递归函数中
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 正在创建对象的递归列表
- 对象与递归函数的比较
- 如何递归地计算它在对象中出现的目标键(属性)的数量
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- 递归对象消息
- 递归 - 将 Javascript Map 转换为嵌套的 JSON 对象
- 如何在返回单个对象时递归使用 Array.prototype.find()
- Javascript 从嵌套的 UL LI 复选框生成递归 JSON 对象
- 用于创建 JSON 对象的 Javascript 递归
- 不同对象之间的递归,并将它们唯一地组合在一起,不重复
- 如何使用javascript在递归对象中找到基于一键的树级别
- '递归到对象'13076断言在MongoDB中失败
- 递归没有完全遍历具有嵌套对象的对象
- JSON 对象 - 递归更改所有子项的属性名称
- 通过 JavaScript 对象递归
- 构建对象递归
- 嵌套Javascript对象:递归和“复杂”转换(使用lodash)