如何在战舰结束时从所有<tds>删除事件监听器?</tds>

时间:2014-09-27 07:08:28

标签: javascript

所以我一直在做战舰游戏,但我遇到了一个我无法解决的问题。当找到所有8艘船时,我想提醒一条获胜的消息,即在玩家获胜之前开枪的总数。然后我想删除进一步点击代表正方形的tds的能力,从而模拟&#34;游戏结束&#34;。下面的代码仅阻止警报显示多次,但您仍然可以单击方块以便执行其他一些代码。我想摆脱这个。如何选择所有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. 
}

1 个答案:

答案 0 :(得分:1)

向每个td添加事件监听器是非常糟糕的做法,imho。

尝试稍微更改您的代码,只将一个事件监听器附加到表正文,并更改click回调以找出event.target,这将是您的td

它会让你的代码更快,你可以从table删除所有td的监听器。

这是您的代码略有变化

http://jsfiddle.net/bd07hy5g/1/