Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 记忆游戏黑客(不需要)双击同一张牌并进行匹配_Javascript - Fatal编程技术网

Javascript 记忆游戏黑客(不需要)双击同一张牌并进行匹配

Javascript 记忆游戏黑客(不需要)双击同一张牌并进行匹配,javascript,Javascript,如果用户在记忆游戏中点击同一张卡,我试图不允许调用匹配。但它仍然允许这样做 我试着跟踪鼠标,尽量不让它点击同一张卡 <script> var OpenCard = []; if (OpenCard.length == 2){ const CardType1 = OpenCard[0].querySelector('i').classList.item(1) const CardType2 = OpenCard[1].querySelector(

如果用户在记忆游戏中点击同一张卡,我试图不允许调用匹配。但它仍然允许这样做

我试着跟踪鼠标,尽量不让它点击同一张卡

<script>

var OpenCard = [];

if (OpenCard.length == 2){
    const CardType1 = 
    OpenCard[0].querySelector('i').classList.item(1)
    const CardType2 = 
    OpenCard[1].querySelector('i').classList.item(1)
    console.log(CardType1, CardType2);
    movespassed();
    check_stars();

    //compares two cards and checks for a match
    if (CardType1 == CardType2){
        OpenCard.forEach(function(card){ 
            card.classList.add('match')
        });
        OpenCard = []
        game_score++;
        console.log(game_score);



    }
    //if cards don't match close them
    else{
        console.log("i'm here")
        setTimeout(function(){
            OpenCard.forEach(function(card){ 
                card.classList.remove('show', 'open')
            })
            OpenCard = []
        },200);
    }
</script>function(c){
            OpenCard.push(card);
            track.push(card);
            card.classList.add('show', 'open');

var OpenCard=[];
if(OpenCard.length==2){
常数CardType1=
OpenCard[0]。查询选择器('i')。类列表。项(1)
常数CardType2=
OpenCard[1]。查询选择器('i')。类列表。项(1)
控制台日志(CardType1、CardType2);
movespassed();
勾选星号();
//比较两张牌并检查是否匹配
如果(CardType1==CardType2){
OpenCard.forEach(函数(卡){
card.classList.add('match')
});
OpenCard=[]
游戏记分++;
控制台日志(游戏分数);
}
//如果卡不匹配,关闭它们
否则{
log(“我在这里”)
setTimeout(函数(){
OpenCard.forEach(函数(卡){
card.classList.remove('show','open')
})
OpenCard=[]
},200);
}
职能(c){
OpenCard.push(卡片);
轨道.推(卡);
card.classList.add('show','open');

我觉得我需要查看用户单击的实际元素,以便更好地回答这个问题,但作为一般规则,我喜欢使用“标志”类,这些类添加到元素中,然后在需要时删除

例如:

function cardClick(element){
  if (!element.classList.contains('clicked')){
   element.classList.add('clicked');
  // The rest of your code goes here
   }
}
然后,当卡片翻转、删除等时,使用此选项删除“单击”类:


在上面,它只允许第一次点击,因为第二次点击会看到“点击”类位于元素上,将绕过其余的代码。

您的代码有点混乱。什么是
OpenCard
?它似乎是一个元素数组。为元素提供唯一的id,您可以比较一张卡的id与另一张卡的id,如果它们相同,则单击了同一张卡。如果没有HTML,很难分辨。您可能要创建一个复制您当前问题的。OpenCard基本上是一个空白数组。它等于=[]正是如此,我正在将卡片放入该数组中。请您的问题包括创建
OpenCard
并用元素填充它的代码。我现在就这样做了。
element.classList.remove('clicked');