2017-11-18 49 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