0

我正在创建一个匹配游戏,我正在尝试从数组中添加一个类来匹配。下面的代码创建了我需要的类,然后将它们随机化。

我的问题出在 randomizeDeck 函数中。我正在尝试将每个类添加到指定元素两次。当我 console.log 将代码添加到前六个元素而不是后六个元素时,我需要这样做,以便在我正在创建的匹配游戏中匹配这些类。

var cardDeck = new Array();

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
    }
}
createDeck();

var randDeck = cardDeck.sort(randOrd);

function randomizeDeck() {
    card.each(function(i){
        $(this).addClass(randDeck[i]);
    });
}
randomizeDeck();
4

4 回答 4

1

我认为您的 createDeck 函数需要创建 12 个类而不是 6 个。只需将每个类推两次:

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
        cardDeck.push("card-" + i);
    }
}

然后,您将拥有一个包含 12 个类别的数组(6 个唯一类别中的每个类别 2 个),这些类别将被随机分配给 12 张卡片。

于 2013-09-26T19:11:05.410 回答
0

我建议使用单独的变量来跟踪索引,而不是each索引。一旦你完成了一次包,最好再次洗牌,这样第二次的顺序就不同了。YMMV。

function sortCards(randOrd) {
  randDeck = cardDeck.sort(randOrd);
}

function randomizeDeck() {
  var count = 0;
  cards.each(function(i) {
    if (i === 6) { count = 0; sortCards(randOrd); }
    $(this).addClass(randDeck[count]);
    count++;
  });
}
于 2013-09-26T19:16:17.467 回答
0

您的 randomizeDeck() 函数可以重写为使用相同的类名数组两次:

function randomizeDeck() {
    card.each(function(i){
        if(i < 6)
            $(this).addClass(randDeck[i])
        else
            $(this).addClass(randDeck[i-6]);
    });
}

注意:我会重写变量card$cards以便您知道它是一个 jQuery 对象,在本例中是它们的集合。否则,很难将它与任何其他 javascript var 区分开来。

于 2013-09-26T18:51:59.797 回答
0

尝试这样的事情 - 它现在已经过测试更新了看这个小提琴 http://jsfiddle.net/8XBM2/1/

var cardDeck = new Array();

function createDeck() {
    for (i = 1; i <= 6; i++) {
        cardDeck.push("card-" + i);
    }
}
createDeck();
var randDeck = cardDeck.sort();
alert(randDeck);

function randomizeDeck() {
    var x = 0;
    $('div').each(function(i){
     if ( i > 5) { 

                $(this).addClass(randDeck[x]);
         x++; 
      } else {
        $(this).addClass(randDeck[i]);
    }
    });
}
randomizeDeck();
于 2013-09-26T19:00:58.740 回答