2017-11-18 51 views
0

我一直在嘗試創建一張虛擬撲克牌,其中一張牌可以從卡組中抽出一張隨機牌。Javascript - 正在更新字符串值

我做這個工作的方式是通過一個switch語句,這樣如果繪製一個'AH'的值,那麼所顯示的圖像就是一張Card of Ace of Hearts。到現在爲止還挺好。

但是,我試圖實現一個小功能,以便顯示一條消息,說'你畫了心的王牌。我的(失敗)的嘗試在成纔是分割變量「AH」成2個獨立的變量:

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

然後使用switch語句「A」到「王牌」和「H」轉換成「心」:

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