2017-08-29 14 views
0

マッチゲームを構築していて、配列の長さ= 2に一致するかどうかをチェックする空の配列にカードの値を渡そうとしています。 $ flippedCards、私はカードの値がそれにプッシュされておらず、その長さはまだ0Jquery .push配列の長さを増やさない

$('.card').click(function() { 
MatchGame.flipCard($(this),$('#game')) 
}); 


MatchGame.flipCard = function($card, $game) { 

    var $flippedCards = $game.data('flippedCards', []); 

    console.log($card.data('flipped')); 
    console.log($card.data('value')); 
    console.log($card.data('color')); 

    if ($card.data('flipped')) { 

     console.log('card already flipped'); 
     console.log($flippedCards); 
     return; 

    } else { 

     $card.data('flipped', true); 
     $card.css('background-color', $card.data('color')); 
     $card.text($card.data('value')); 
     $card.css('background-image', null); 
     $flippedCards.push($card.data('value')); 

     console.log($flippedCards); 
    } 

}; 

あるプロジェクトはここhttps://github.com/liviarett/matchgame

+0

は、関連するすべてのコードを提供してください。 – TheRealMrCrowley

+0

'$ flippedCards.push($ card.data( 'value'));'はそこにありますが、実行されていますか? – tadman

答えて

0

データは、ここでは属性:あなたは$ game.data行うときに、それは実際にあなたに$ゲームを返すよう

var $flippedCards = $game.data('flippedCards', []); 

jQueryのは、すべての連鎖についてです( 'filppedCardsを'、[]):

$game.data('flippedCards', []) === $game // true 

renderCardsメソッドの前のどこかにデータ属性を設定したい場合があります。そして、valueパラメータなしで$ flippedCardsを設定します。

var $flippedCards = $game.data('flippedCards'); 

UPDを:あなたはすでにそれが実際にrenderCards方法にあります質問をするとき

$game.empty(); 
$game.data('flippedCards', []); 
+0

ありがとう、私は(renderCardsで初期化した)すべてのものを保持しましたが、更新されたvar $ flippedCards = $ game.data( 'flippedCards'、[]); varに$ flippedCards = $ game.data( 'flippedCards');それは働いているようだ!助けてくれてありがとう :) –

1

も利用可能である私はクローン化され、あなたのコードを実行されたことを参照してください。新しいvar $flippedCards = $game.data('flippedCards', []);を毎回初期化しているようですが、それを初期化してグローバル変数にするか、パラメータとして渡すか、それを新しい変数として再初期化する必要があります。あなたが望むように増加していません。あなたが実際に設定されているので

関連する問題