我正在创建一个匹配的游戏,我正在尝试从数组中添加一个类来匹配。 我下面的代码创建了我需要的类,然后将它们随机化。
我的问题在于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();
答案 0 :(得分:1)
我认为你的createDeck函数需要创建12个类而不是6个。只需将每个类推两次:
function createDeck() {
for (i = 1; i <= 6; i++) {
cardDeck.push("card-" + i);
cardDeck.push("card-" + i);
}
}
然后你将有一个12个类的数组(6个独特类中的2个),这些类将被随机化并分配给12个卡。
答案 1 :(得分: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。
答案 2 :(得分: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();
答案 3 :(得分: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++;
});
}