【发布时间】:2016-04-11 02:30:37
【问题描述】:
我认为这个onClick event in a For loop 会帮助我,但是当我尝试它时,它仍然不起作用。
我正在制作一个简单的 Battleship 游戏,当我试图让用户只点击 4 个方格以放置在船上时,循环继续进行,并且在 4 次尝试后不会停止。我在 for 循环中有我的 onclick 偶数处理程序,但是在 4 次尝试后它并没有停止。我尝试在结束后添加一个计数变量,甚至尝试添加一个 break 语句但无法使其工作。
这是我的代码:
function placeShips() {
var playerTable = document.getElementById("mainPlayer");
var playerCells = playerTable.getElementsByTagName("td");
var count = 1;
alert("Please place the first ship. Click on 4 squares.");
while (count <= 4) {
for (i = 0; i < playerCells.length; i++) {
playerCells[i].onclick = placeBattleship;
}
count++;
}
}
placeBattleship 函数包含将网格正方形更改为红色背景色以标记它的代码。我的问题是,一旦用户点击了 4 个方格,您就可以继续点击更多。在用户单击 4 个方格后,我无法获得调用 placeBattleship 函数停止的上述 for 循环。我试过把它放在一个while循环中,甚至是上面链接中的解决方案,以及移动计数的分配,但不能让它在x次后停止(在这种情况下,4次)。
对我做错了什么有什么想法,或者有更好的方法吗?
【问题讨论】:
-
每次运行循环时都会将计数重置为 1
-
操作。您不只是将 placeBattleShip 功能附加到每个单元格的 onclick 上吗?您不想在玩家点击 4 个单元格后“取消附加”处理程序吗?
-
@pathfinder 我是否在 while 循环中声明计数?我尝试在 for 循环中移动 count++,但这似乎也不起作用。
-
@stripathi 我想我不知道该怎么做。有没有办法做到这一点?
-
在计算已单击的单元格数为 4 后尝试分配 onclick = null。您的计数必须是比订阅/取消订阅事件的函数生命周期更高的变量。我会举一个例子,但我现在太累了。如果没有其他人会在明天发布答案。
标签: javascript html