2013-06-18 133 views
0

我工作的这个目前:传递对象递归

  • 我有一个div“out”和“中”的按钮。
  • 单击按钮创建div“extra”并按钮“extra_b”
  • 同时“out”和“in”隐藏。
  • 点击 “extra_b”, “出” 和 “” 出现,并DELETE “额外” 和按钮 “extra_b”

下面是示例:FIDDLE

它不能正常工作,经过我检查控制台,它可能告诉我:

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

无法电流输出元件的物体正确地传递给函数:

function add(objectIn){ 
} 

请问如何将元素传递给递归函数?以及如何修改我的当前代码以使其正确运行?

非常感谢!

+0

@Kuraiinazuma当然是的 – Darklizard

+0

@Darklizard nwm在盲目:) – ccd580ac6753941c6f84fe2e19f229

+0

@Quentin也许没有。我的递归用于将函数应用于所有主要元素 – Darklizard

回答

0

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

所以你要做的:

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

+0

非常感谢!你的代码中括号中的小错误:inner.onclick = function(i){return function(){add(outer [i])}}(i); – Darklizard

0

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

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