2014-07-02 16 views
0

我是一個tyro。我一直在尋找並找到類似問題的答案,但實施他們的解決方案(可能不正確),我並沒有一直失敗。我製作了自己的「康拉德的人生遊戲」。我將單元格放置在大小爲「worldSize」的數組「allCells」中(這是用戶在開始「遊戲」之前確定的變量)。JS:將數組的索引提供給它們自己的onclick函數

這些單元格都是具有各種屬性的對象文字,其中之一就是它們的「domInfo」,它等於具有給定類名稱的「div」。

我將單元格的所有屬性都分配給for循環。在for循環中,我想要的東西,其功能類似這樣的(似乎它應該):

allCells[i].domInfo.onclick = userFlipsStatusOfCell(i); 

userFlipsStatusOfCell是檢查細胞(死或生)的狀態,將其翻轉功能。它需要數組中單元格的索引。

第二個問題:將單元格更改爲Cell類並創建原型函數解決此問題?

編輯:僞重複的(缺少「返回」對我來說,當我嘗試它根本就不工作,類似的解決方案),還包括其他良好的信息請訪問:Get index of clicked element using pure javascript

+0

您正在調用函數並分配結果,而不是分配函數本身。 – RobG

+0

做'allCells [i] .domInfo.onclick = userFlipsStatusOfCell(i);''將該函數的返回值賦給onclick屬性。您需要分配函數本身。 – techfoobar

+0

優秀的教育給我。感謝大家。要玩這個概念,直到它堅持下去。 – TheNeophyte

回答

0

您調用的函數和分配結果,不分配該功能。你可能會做的事:

allCells[i].domInfo.onclick = function(){userFlipsStatusOfCell(i)}; 

然而,將讓在一個封閉,這樣所有的聽衆將獲得相同的值(最後一個值是退出循環之前設置)。爲了防止這種情況,一個選項是:

allCells[i].domInfo.onclick = (function(n) { 
           return function(){userFlipsStatusOfCell(n)}; 
           }(i)); 
+0

我現在有一個工作「生活的遊戲」。謝謝。這個答案几乎逐字地在那裏,它不適合我。他們沒有使用「迴歸」,也許這就是區別。如果我再次找到答案,我會在這裏鏈接。 – TheNeophyte

相關問題