2017-11-18 12 views
0

私はデッキからランダムなカードを引き出すことができるカードの仮想デッキを作成しようとしています。Javascript - 文字列値の更新

私がこの作業をしたのは、スイッチのステートメントで、「AH」の値が描かれている場合、表示されるイメージはAce of Heartsのカードのイメージです。ここまでは順調ですね。

しかし、私は「あなたがハートのエースを描いた」というメッセージが表示されるように小さな機能を実装しようとしています。

var drawnCardValue = 'A'; 
var drawnCardSuit = 'H'; 

は、次にswitch文を使用して「ハート」に「エース」から「A」と「H」を変換します:

マイ達成の試みは、2つの別々の変数に分割変数「AH」です(失敗しました)
function fullName(){ 
    switch(drawnCardValue){ 
     case 'A': 
      drawnCardValue = "Ace"; 
      break; 
     } //repeated for all values 
    switch(drawnCardSuit){ 
     case 'H': 
      drawnCardValue = "Ace"; 
      break; 
     } //repeated for all suits 
    } 

下図のように、私のdrawCard()関数の中で上記の機能を実現:それはまだ表示され

function drawCard(){ 
    if(count < 52){ 
     drawnCard = deck.shift(); 
     showCard(); 
     var drawnCardValue = drawnCard.slice(0, -1); 
     var drawnCardSuit = drawnCard.slice(-1); 
     fullName(); 
     document.getElementById("info").innerHTML = "You drew " + drawnCardValue + " of " + drawnCardSuit; 
     count++; 
    } else{ 
     document.getElementById("info").innerHTML = "Out of Cards"; 
    } 
} 

:あなたはHの

を描きました

これはなぜですか?それをどうやって修正することができますか?

ありがとうございます!

+1

がそれに完全なコードまたは少なくともリンクを提供してください。 – deathangel908

+0

実用新案またはjsfiddleを作成してください – brk

+0

'fullName()'を一度も呼んでいないようです。 –

答えて

0

あなたのコードを見ることによって、両方のfullNamedrawCardの機能は外側(すなわち、外側のスコープで)定義されていdrawnCardValuedrawnCardSuit変数を書いて/読んでいるように見えます。

しかし、draw関数では、外側のスコープにある変数をシャドーイングする新しい変数を作成しています。

var drawnCardValue = drawnCard.slice(0, -1); // <--- NEW VARIABLE 
var drawnCardSuit = drawnCard.slice(-1); // <--- NEW VARIABLE 
fullName(); 

これはfullNameはまだ外側のスコープで変わらない変数を処理することを意味します。

問題を解決するためにvarを削除します。

drawnCardValue = drawnCard.slice(0, -1); 
drawnCardSuit = drawnCard.slice(-1); 
fullName(); 
+0

うん、問題を修正しました。ありがとうMaluen !!フィードバック感謝しています:) – Matthew

関連する問題