全局变量的功能不会改变

时间:2017-10-19 02:35:11

标签: javascript variables global local

为了练习编码,我正在制作一个带轮盘赌轮的虚拟赌场。为了简单起见,轮子目前只有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);

2 个答案:

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

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