Javascript - 更新字符串值

时间:2017-11-18 10:22:54

标签: javascript html

我一直在尝试创建一个真正的扑克牌,人们可以将牌随机拉出牌组。

我做这项工作的方式是通过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

这是什么原因?我该如何解决?

提前致谢!!

1 个答案:

答案 0 :(得分: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();