2017-10-19 227 views
1

为了练习编码,我使用轮盘制作一个虚拟赌场。为了简单起见,车轮目前只有4个部分,而不是通常的37个。我试图设置一个“金钱”变量,每当玩家旋转轮盘时就进行调整。 IE如果玩家在第4号投​​注10美元并输掉,他们现在将有190美元而不是200美元。问题是,“货币”变量似乎没有改变,尽管它是一个全局变量。全局变量在函数中不会改变

这是我的一段代码。问题是什么?

var money = 200; 

function spin(){ 
    var landing = Math.floor(Math.random() * 4) + 1; 

    var nsvalue = parseInt(document.regular_roulette.num_select.value); 

    var betvalue = parseInt(document.regular_roulette.bet.value); 

    if (landing === nsvalue) { 
    alert("You win $" + betvalue * 3); 

    money = money + (betvalue * 3); 
    } else { 
    alert("You lose $" + betvalue); 

    money = money - betvalue; 
    } 
} 

document.write("You currently have $" + money); 
+0

你是如何调用'文件撰写()'?你应该在你的函数本身中调用它(或以其他方式更新页面)。否则,你只能输出到页面一次;在任何投注发生之前。在**'money'更新之后,您需要更新输出**。 –

+0

你确定你从某处调用'spin()'方法吗?另外问题可能出现在'document.regular_roulette.bet.value'中 - 它可能为零/未定义... – dhilt

+0

请注意'document.write'会覆盖你的文档... –

回答

-1

而不是使用全局变量。你可以尝试将它传递给函数并返回并重新分配它。

var money = 200; 

     function spin(m){ 



        var landing = Math.floor(Math.random() * 4) + 1; 

        var nsvalue = parseInt(document.regular_roulette.num_select.value); 

        var betvalue = parseInt(document.regular_roulette.bet.value); 


        if (landing === nsvalue) 
        { 
         alert("You win $" + betvalue * 3); 

         m = m + (betvalue * 3); 


        } 

        else 
        { 
         alert("You lose $" + betvalue); 

         m = m - betvalue; 


        } 
        return m; 
     } 

    money = spin(m); 

    document.write("You currently have $" + money); 
0

通常情况下,你可能把这个在一些输入字段,检查这些值(检查非数字),并输出到页面上的一些元素。在这里我使用旋转按钮点击旋转动作。例。

var money = 200; 
 

 
function spin() { 
 
    var landing = Math.floor(Math.random() * 4) + 1; 
 
    var nsvalue = parseInt(document.getElementById("num_select").value); 
 
    var betvalue = parseInt(document.getElementById("bet").value); 
 
    if(!isNaN(nsvalue)&& !isNaN(betvalue)) 
 
    if (landing === nsvalue) { 
 
    document.getElementById("action").innerText =("You win $" + betvalue * 3); 
 
    money = money + (betvalue * 3); 
 
    } else { 
 
    document.getElementById("action").innerText =("You lose $" + betvalue); 
 
    money = money - betvalue; 
 
    } 
 
//something here to show spin value perhaps? 
 
} 
 
document.getElementById("spinme").onclick = function(event) { 
 
    spin(); 
 
    document.getElementById("results").innerText = ("You currently have $" + money); 
 
}
<div id="results"> 
 
    empty 
 
</div> 
 
<div id="regular_roulette"> 
 
    <label>Choice 
 
    <input id="num_select"> 
 
    </label> 
 
    <label>Bet 
 
    <input id="bet"> 
 
    </label> 
 
</div> 
 
<button id="spinme"> 
 
    Spin! 
 
</button> 
 
<div id="action"> 
 

 
</div>