2015-11-08 79 views
-1

我正在练习事件监听器和函数,并试图构建一个非常简单的纸牌游戏。我的第一个2个函数用于在单击相应按钮后获取卡片1和卡片2的值。我已经构建了三分之一来组合总数,但无法将生成的值拉到第三个函数中。我的第三个函数总是返回零。我明白为什么,但一直未能找到解决方案来从前两个函数中获取值。任何帮助表示赞赏,谢谢。来自多个函数的javascript拉值

var cardButton = document.getElementById('cardButton1'); 
    var cardButton2 = document.getElementById('cardButton2'); 
    var cardValue = document.getElementById('cardValue'); 
    var cardValue2 = document.getElementById('cardValue2'); 
    var cardTotalButton = document.getElementById('cardTotalButton'); 
    var cardTotal = document.getElementById('displayTotal'); 
    var card1Value = 0; 
    var card2Value = 0; 
    var totalCardsValue = 0; 
    var cardMin = 1; 
    var cardMax = 14; 


    function generateCard(){ 
    var card1Value = randCard(); 
    cardValue.innerHTML = 'card value is ' + card1Value; 
    return card1Value; 
    } 

    function generateCard2(){ 
    var card2Value = randCard(); 
    cardValue2.innerHTML = 'card value is ' + card2Value; 
    return card2Value; 
    } 

    function getPlayerTotal(){ 
    var totalCardsValue = card1Value + card2Value; 
    //console.log(cardValue2 + 'test'); 
    cardTotal.innerHTML = 'card total is ' + totalCardsValue; 

    } 

cardButton.addEventListener('click',generateCard); 
cardButton2.addEventListener('click',generateCard2); 
cardTotalButton.addEventListener('click',getPlayerTotal); 



function randCard(){ 
    var genRandCard = Math.floor(Math.random()*cardMax)+1; 
    return genRandCard; 
} 
+0

你是怎么调用'generateCard *'的?你对返回值做什么?你必须将它们分配给... –

+0

再次感谢此工作。我没有使用我猜的回报。 – KM617

回答

1

您要重新声明你card1Valuecard2ValuetotalCardsValue到本地范围。在他们面前删除var。这样做,您不需要返回generateCard()generateCard()函数中的任何值,因为您正在使用全局变量。

function generateCard(){ 
    card1Value = randCard(); //<-------Don't use var here 
    cardValue.innerHTML = 'card value is ' + card1Value; 
    return card1Value; //<-------This line is not really needed 
    } 

    function generateCard2(){ 
    card2Value = randCard(); //<-------Don't use var here 
    cardValue2.innerHTML = 'card value is ' + card2Value; 
    return card2Value; //<-------This line is not really needed 
    } 

    function getPlayerTotal(){ 
    totalCardsValue = card1Value + card2Value; //<-------Don't use var here 
    //console.log(cardValue2 + 'test'); 
    cardTotal.innerHTML = 'card total is ' + totalCardsValue; 
    } 
+0

这很有道理。谢谢! – KM617