我一直在尝试创建一个真正的扑克牌,人们可以将牌随机拉出牌组。
我做这项工作的方式是通过switch语句,这样如果绘制'AH'的值,则显示的图像是带有Ace of Hearts的卡片。到目前为止一切都很好。
但是,我正在尝试实现一个小功能,以便显示一条消息,说“你画了一颗心之王”。我(失败)尝试完成的是将分裂变量'AH'分成两个独立的变量:
var drawnCardValue = 'A';
var drawnCardSuit = 'H';
然后使用switch语句将'A'转换为'Ace',将'H'转换为'Hearts':
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
这是什么原因?我该如何解决?
提前致谢!!
答案 0 :(得分:0)
通过查看代码,fullName
和drawCard
函数看起来都在读/写外部定义的drawnCardValue
和drawnCardSuit
变量(即外部范围)。
但是在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();