如何在JavaScript中删除类并保存我删除的类

如何在JavaScript中删除类并保存我删除的类,javascript,css,Javascript,Css,所以,我用html、css和javascript制作了一个记忆游戏 我做了一个按钮来切换卡片,这意味着所有拥有 ('flipped')类将删除或添加到该类中。它看起来像这样: 函数切换(){ var divs=document.querySelectorAll('.card'); 对于(var i=0;0

所以,我用html、css和javascript制作了一个记忆游戏

我做了一个按钮来切换卡片,这意味着所有拥有

('flipped')类将删除或添加到该类中。它看起来像这样:

函数切换(){
var divs=document.querySelectorAll('.card');
对于(var i=0;0
我想使卡片已经翻转,不受切换按钮的影响


有什么想法吗?

我想你在找
:not()选择器

var nonFlippedCards=document.queryselectoral('.card:not(.fliped');
对于(var i=0;0}
很难理解您希望按钮做什么,但是如果您想将翻转的卡片正面朝下翻转,则不需要else语句。当你点击卡片或其他你想要的方式时,你需要添加翻转到卡片上的类,然后使用这个按钮再次将它们全部面朝下。请详细解释一下按钮的用途。

如果该元素已经包含该类,则classList.add()方法不会添加“flipped”类,因此我猜您想跟踪过去翻转过的卡片吗?(我看不到你的视频)。为此,您可以使用异步数组(作用域位于函数外部)跟踪卡是否翻转。只需创建一个空数组,然后使用for循环将数组中的值设置为1,无论何时切换卡,然后在添加“flipped”类之前检查数组中是否存在该值,如下所示

var dArr = [];

function toggle (){
  var divs = document.querySelectorAll('.card');
  for (var i = 0; i < divs.length; i++){ 
    if (divs[i].classList.contains('flipped')){
    divs[i].classList.remove('flipped'); 
    dArr[i] = 1;
  } else if (!dArr[i]){ 
    divs[i].classList.add('flipped'); } 
  } 
}

var-dArr=[];
函数切换(){
var divs=document.querySelectorAll('.card');
对于(var i=0;i
旁注:您的代码中有一个简单的错误,您将
0
确保包含
i
,以防止出现不连续的for循环。:)

如果您想让代码更快一点,还可以在页面加载一次时抓取“.card”div,这样就不必在每次触发toggle()函数时都这样做。除非你打算随着游戏的进行添加更多的牌,否则这应该是可行的。我还将把值包装在一个对象中,以避免使用全局变量,这将防止将来发生冲突。最后,我不会调用您的函数toggle(),因为它通常在JavaScript和JavaScript库中使用。不管怎样,如果您感兴趣,这里是我的版本,init函数获取所有“.card”div,将它们粘贴到dVars对象中的元素数组中,dArr变量也存储在同一个对象中,以防止使用全局变量

var dVars = {
  dArr: [],
  divs: undefined
}


function flip (){
  for (i = 0; i < dVars.divs.length; i++){
    console.log(i);
    if (dVars.divs[i].classList.contains('flipped')){
        dVars.divs[i].classList.remove('flipped');
        dVars.dArr[i] = 1;
    } else if (!dVars.dArr[i]){
      dVars.divs[i].classList.add('flipped');
      console.log(i);
    }
  }
}

function init() {
  dVars.divs = document.querySelectorAll('.card');
}

window.onload = init;
var-dVars={
dArr:[],
divs:未定义
}
函数翻转(){
对于(i=0;i
您也可以在不使用异步数组的情况下执行此操作,方法是在每个
中添加一个类“haslipped”以及“flipped”类,然后在再次添加类“flipped”之前检查
是否具有该类:

var dVars = {
  divs: undefined
}


function flip (){
  for (i = 0; i < dVars.divs.length; i++){
    if (dVars.divs[i].classList.contains('flipped')){
        dVars.divs[i].classList.remove('flipped');
    } else if (!dVars.divs[i].classList.contains('hasFlipped')){
      dVars.divs[i].classList.add('flipped', 'hasFlipped');
    }
  }
}

function init() {
  dVars.divs = document.querySelectorAll('.card');
}

window.onload = init;
var-dVars={
divs:未定义
}
函数翻转(){
对于(i=0;i

希望这有帮助

我想做的是,一张已经翻动的卡片(已经显示),为了不受切换按钮的影响,我制作了一个小视频来更好地解释我自己
var dVars = {
  divs: undefined
}


function flip (){
  for (i = 0; i < dVars.divs.length; i++){
    if (dVars.divs[i].classList.contains('flipped')){
        dVars.divs[i].classList.remove('flipped');
    } else if (!dVars.divs[i].classList.contains('hasFlipped')){
      dVars.divs[i].classList.add('flipped', 'hasFlipped');
    }
  }
}

function init() {
  dVars.divs = document.querySelectorAll('.card');
}

window.onload = init;