我正在制作一个井字游戏,我想确保单个方块只能单击一次,我找到了一种通过使用 null 修饰符来做到这一点的方法,但这意味着如果撤消移动,则 null 仍然存在,并且方块变得无法播放。我想要一种方法来防止一个方块被多次播放,但如果使用撤消按钮,它会再次播放
目前为了防止一个方块被多次播放,我正在使用:
onclick="myFunction(); this.onclick=null;"
这确实解决了我最初的问题,即防止每个方格超过一次移动,但这意味着当撤消移动时,该方格仍然无法播放,因为 onclick 仍然存在
null
。
该函数应该更新元素以指示它已被播放。然后该函数可以在再次播放之前检查这一点。
您可以使用
dataset
属性来获取与元素关联的特定于应用程序的数据。
document.getElementById("cell").addEventListener("click", function() {
if (this.dataset.played == 'true') {
console.log("Already played");
} else {
console.log("Playing the space");
this.dataset.played = 'true';
}
});
document.getElementById("undo").addEventListener("click", function() {
document.getElementById("cell").dataset.played = 'false';
});
<button id="cell">Click me</button>
<button id="undo">Undo</button>