2013-06-18 190 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]);