所以我一直在做战舰游戏,但我遇到了一个我无法解决的问题。当找到所有8艘船时,我想提醒一条获胜的消息,即在玩家获胜之前开枪的总数。然后我想删除进一步点击代表正方形的tds的能力,从而模拟"游戏结束"。下面的代码仅阻止警报显示多次,但您仍然可以单击方块以便执行其他一些代码。我想摆脱这个。如何选择所有td元素并使附加到click事件的所有代码停止工作?也许有一种更简单的方法可以创造一个游戏,而不是#34;比这个?任何帮助表示赞赏。
编辑这是一个小提琴: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.
}
答案 0 :(得分:1)
向每个td
添加事件监听器是非常糟糕的做法,imho。
尝试稍微更改您的代码,只将一个事件监听器附加到表正文,并更改click
回调以找出event.target
,这将是您的td
。
它会让你的代码更快,你可以从table
删除所有td的监听器。
这是您的代码略有变化