全局变量在函数中不会改变
问题描述:
为了练习编码,我使用轮盘制作一个虚拟赌场。为了简单起见,车轮目前只有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);
答
而不是使用全局变量。你可以尝试将它传递给函数并返回并重新分配它。
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);
答
通常情况下,你可能把这个在一些输入字段,检查这些值(检查非数字),并输出到页面上的一些元素。在这里我使用旋转按钮点击旋转动作。例。
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>
你是如何调用'文件撰写()'?你应该在你的函数本身中调用它(或以其他方式更新页面)。否则,你只能输出到页面一次;在任何投注发生之前。在**'money'更新之后,您需要更新输出**。 –
你确定你从某处调用'spin()'方法吗?另外问题可能出现在'document.regular_roulette.bet.value'中 - 它可能为零/未定义... – dhilt
请注意'document.write'会覆盖你的文档... –