所以我一直在开发战舰游戏,但遇到了一个无法解决的问题。当找到所有 8 艘船后,我想提醒一条获胜消息,即玩家获胜之前发射的总枪数。然后我想删除进一步单击代表方 block 的 tds 的功能,从而模拟“游戏结束”。下面的代码仅阻止警报多次显示,但您仍然可以单击方 block 以执行其他一些代码。我想摆脱这个。如何选择所有 td 元素并使附加到单击事件的所有代码停止工作?也许有比这更简单的方法来创建“游戏结束”?如有任何帮助,我们将不胜感激。
编辑这是一个 fiddle :http://jsfiddle.net/pfb8dc83/1/
if (hitsCounter == 8) {
alert('Congratulations! You sank all battleships!');
alert('You fired ' + totalShots + ' rounds before you won the battle of the sea.');
var all = document.getElementsByTagName('table')[0].getElementsByTagName('td');
all.length.removeEventListener('click', play); //getting an error here saying it's not a function, because of the .length probably.
}
最佳答案
向每个 td
添加事件监听器是非常糟糕的做法,恕我直言。
尝试稍微更改您的代码,仅将一个事件监听器附加到表主体,并更改 click
回调以找出 event.target
,这将是您的 td
。
这将使您的代码更快,并且您可以通过从表
中删除监听器来从所有td中删除监听器。
这是您的代码,略有更改
关于javascript - 当战舰游戏结束时,如何从所有 <tds> 中删除事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26072240/