我已经做了很多搜索,似乎找不到我想要的东西,所以很遗憾,这并不是超级重复。我正在用香草javascript做一个非常简单的内存游戏(试图远离jquery,这样我就可以掌握JS的基础知识了)

这是小提琴的链接,因此您可以看到整个作品以及我认为给我带来麻烦的功能:https://jsfiddle.net/69kfgxbn/

var showTile = function() {
var tile = document.getElementsByClassName('tile');
var tilesChosen = 0;
console.log(this.style.backgroundColor);
console.log(this);

if (tilesChosen < 2) {
    this.classList.remove('card-back');
    tilesChosen = tilesChosen + 1;
    console.log('under 2');
    console.log(tilesChosen);
}
else if (tilesChosen == 2) {
    tile.removeEventListener('click', function() {
        console.log('hit the max');
    })
}

};


我的问题是我可以单击一个图块,删除了卡片背面的类以显示颜色,但是我不知道如何将其限制为仅两个图块。

我当前的思路是这样的:

tileChosen设置为零
if语句检查TilesChosen是否如果是这样,将tile选择增加1
否则,如果tileChosen == 2,则删除所有类的事件处理程序,我认为这将阻止任何人翻转超过2个tile。

但到目前为止,无论您单击多少个图块,我什至都没有进入elseIf。同样,tilesChosen不会增加超过1,因此就像我陷入了语句的if部分一样。我还将if / else放在for和while循环中,以强制其循环并测试tileChosen的值,但它是同一回事。

大家的任何建议将不胜感激!

最佳答案

var jsBoard = [];
  var gamePieces = 12;
  var tileChosen = 0;


每次单击时,都将变量tileChosen重新启动为0,因此它永远不会达到所需的值。您应该声明为全局图块

像这样

var jsBoard = [];


var gamePieces = 12;
var tileChosen = 0;

现在您无法点击更多div

09-20 10:38