Uncaught TypeError inside for loop
本问题已经有最佳答案,请猛点这里访问。
我有一个对象数组(播放器),这些对象有一个方法
在
intex.html:56 Uncaught TypeError: Cannot read property 'increment' of
undefined
1 2 3 4 5 6 7 8 9 10 11 | 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('' + players[x].name + 'WINS!!!'); }; }); }; |
当我在循环外调用例如
如果不清楚。 我有一个带有两个按钮的简单页面。 根据我按下的按钮,它会递增,并显示变量。
当我在
当click事件被触发时,你的迭代器等于players.length,然后click处理程序使用该迭代器来尝试访问超出你的player数组范围的索引。
尝试在您的按钮上添加一个索引属性,如下所示:
1 2 3 4 5 6 7 | <button class="player-button" data-player-index="0">Increment</button> <button class="player-button" data-player-index="1">Increment</button> $('.player-button').click(function() { var index = $this.attr('data-player-index'); players[index].increment(); }); |