Javascript 如果匹配,如何翻转卡片如果不翻转,则保持打开

Javascript 如果匹配,如何翻转卡片如果不翻转,则保持打开,javascript,html,css,Javascript,Html,Css,我正在做一个记忆游戏,如果两张牌是相同的,它们是匹配的,如果不是,它们将保持打开状态。它们将倒转一切正常,但当没有匹配时,我单击的第二张牌将不会打开,它将保持关闭状态,第一张牌将倒转,以便它知道没有匹配,并且不会打开第二张牌第一名的卡片 我使用javascript来操纵效果 HTML: 我有两个div代表一张牌的每一面 <div class="card-holder"> <div class="closed-card"></div> <di

我正在做一个记忆游戏,如果两张牌是相同的,它们是匹配的,如果不是,它们将保持打开状态。它们将倒转一切正常,但当没有匹配时,我单击的第二张牌将不会打开,它将保持关闭状态,第一张牌将倒转,以便它知道没有匹配,并且不会打开第二张牌第一名的卡片

我使用javascript来操纵效果

HTML:

我有两个div代表一张牌的每一面

<div class="card-holder">
    <div class="closed-card"></div>
   <div class="opened-card"></div>
</div>
javaScript:

var a=document.querySelectorAll('.opened-card');

var b=document.querySelectorAll('.closed-card');

var count=0; //a variable that will track how many cards are opened
单击卡片时,第一个面“b”旋转180,并添加一个类“测试”。第二个面“a”旋转0并添加了一个类“open”

一种添加事件侦听器的循环,该事件侦听器执行一个函数,在单击某个卡时旋转该卡,并测试是否存在匹配项

for (let x=0;x<16;x++)
{
b[x].addEventListener('click',function()
{
b[x].style.transform="rotateY(180deg)";

b[x].classList.add('test');

a[x].style.transform="rotateY(0deg)";

a[x].classList.add('open');
count++;

if (count===2)
  {
    test();
    count=0;
  }

}); }
如果没有条件,我的卡会很好地翻转,问题是在添加了条件之后,是否存在匹配。如果有匹配,两张牌将翻转并保持打开状态,这没有问题,但当单击两张碰巧不相同的牌时,情况就是这样:我单击第一张牌,它翻转并停留,当单击第二张卡时,它保持关闭状态,根本不会转动,而第一张卡翻转回来,并显示不匹配的消息。如果有人能注意到什么原因,我会很感激的

我还试图为测试函数设置超时,但这不会改变任何事情

setTimeout(test(),2000);

使用
设置超时
。例如,请参见此程序员如何在此处创建内存游戏:。她基本上是说“将卡片展示0.6秒,这样用户就可以看到它们,然后再翻转这些卡片”。我同意上面的说法。代码的语法有点难理解,但似乎在计时方面没有任何问题。如果在同一个代码块中,你让一张面朝下的卡片面朝上,然后再面朝下,它会看起来好像什么都没发生一样。@Rose向我们展示你如何设置计时器(不是在评论中,编辑你的问题)。@Rose谢谢你的编辑。它应该是
setTimeout(test,2000),没有括号。@GerardoFurtado终于成功了!!我真不敢相信我只是因为这个简单的错误而被卡住了,非常感谢。你知道我怎样才能阻止下一对卡的点击,直到前一对卡倒转过来?
function test()
{
  var v=document.querySelectorAll('.open');
  var d=document.querySelectorAll('.test');
  if (v[0].style.backgroundImage===v[1].style.backgroundImage)
  {
    console.log("yes");
    v[0].classList.remove('open');
    v[1].classList.remove('open');
    d[0].classList.remove('test');
    d[1].classList.remove('test');
  }
  else
  {
    console.log("no");
    d[0].style.transform="rotateY(0deg)";
    v[0].style.transform="rotateY(180deg)";
    d[1].style.transform="rotateY(0deg)";
    v[1].style.transform="rotateY(180deg)";
    v[0].classList.remove('open');
    v[1].classList.remove('open');
    d[0].classList.remove('test');
    d[1].classList.remove('test');
  }
}
setTimeout(test(),2000);