我有一個對象(玩家)的數組,並且這些對象有一個方法increment
遞增一個對象變量。未捕獲的類型錯誤裏面的循環
裏面一個for
循環,當我打電話 players[x].increment();
我得到以下錯誤:
intex.html:56 Uncaught TypeError: Cannot read property 'increment' of undefined
for (var x = 0; x < players.length; x++) {
$("#button-" + x).click(function() { //I select one of the buttons
players[x].increment(); //Here is the problem
//This part forwards doesn't matter
$("#score-" + x + "-n").text(players[x].score);
if (players[x].score >= 10) {
alert(players[x].name + " WINS!");
$("#alertz").html('<div class="alert alert-info" style="text-align:center;" >' + players[x].name + 'WINS!!!</div>');
};
});
};
當我打電話例如players[0].increment();
循環外,我沒有任何問題。
萬一不明確。我有一個簡單的頁面,有兩個按鈕。根據我按下的按鈕,它會遞增並顯示一個變量。
當我在increment
部分使用console.log(var)
時,我得到一個2,但players[2]
不存在,所以我認爲這是問題,但我不確定或如何解決它。
[添加「點擊」的循環事件偵聽器]的可能的複製(http://stackoverflow.com/questions/8909652/adding- click-event-listeners-in-loop),或者甚至更好的dup:http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – Teemu
當你點擊按鈕時, 'x'等於'players.length',它比'player'對象的數量多。您必須將x綁定到該函數,以這種方式引用只會爲所有點擊事件生成最後一個x值。 –
你不需要在循環中點擊事件..那是不正確 – bipen