繁体   English   中英

JavaScript硬币翻转“您赢/输”消息不起作用

[英]JavaScript Coin Flip “You Win/lose” Message Not Working

我具有此抛硬币功能,到目前为止,它可以正确正确随机显示“ Heads”或“ Tails”。 但是,我希望每当硬币落在头上时都会出现一条消息,说“您赢了”。 但是现在,无论硬币落在哪一侧,它都只会显示“您松动”。 我怎样才能解决这个问题?

 <DOCUTYPE html> <head> <title>Coin Toss V1</title> <style> </style> </head> <body> <button id="click" type="button">CLICK ME</button> <p> <b> You got:</b> <span id="result"></span> </p> <script> document.getElementById('click').onclick = click; var heads = 0; var tails = 0; function click() { x = (Math.floor(Math.random() * 2) == 0); if (x) { flip("heads"); } else { flip("tails"); } }; function flip(coin) { document.getElementById("result").innerHTML = coin; }; if (x == "heads") { document.write("you win!"); } else { document.write("you loose"); } </script> </body> </DOCUTYPE> 

您的示例代码有很多问题-此答案将有助于解决最紧迫的问题。

我建议按如下所示重新组织您的click功能:

function click() {
    x = (Math.floor(Math.random() * 2) == 0);
    if (x) {
      flip("heads");
      document.write("you win!");
    } else {
      flip("tails");
      document.write("you loose");
    }
};

并删除以下代码块:

  if (x = heads) {
    document.write("you win!");
  } else {
    document.write("you loose");
  }

需要指出的几件事:

  1. heads"heads"不同。 前者表示特定的字符串变量,而后者则是字符串值。
  2. ===不同。 前者为变量分配值,而后者进行相等比较。
  3. click内部,您为x赋值为truefalse ,因此下面的if语句应将x与true或false进行比较。
  4. 在原始代码中,底部的if语句在页面加载后立即触发-在执行click函数之前。 将您的document.write代码移动到click函数中是有意义的,以便它可以输出硬币翻转click函数的结果。

我还建议您阅读有关全局变量(例如,变量x )及其为何有问题的信息。

您需要在此处修复错误。 您是将head的值分配给x,而不是进行比较。

if (x = heads){

注意:您是根据自己的情况分配的,而不是进行比较!

if (x == heads)

代替

if (x = heads)

否则,您将头分配给x,然后执行if(x),只要heads = 0,该值始终为假。

您需要为相等比较运算符使用两个等号,请尝试:

if (x == heads)...

除了那一行之外,您没有使用head或tails变量。 您可以删除它们并使用

if (x)...

在您的第二个if语句中,就像您在第一条中所做的一样。

结果检查应该在功能子函数flip()内,因此每次硬币被翻转时都要执行一次。

function flip(coin) {
    document.getElementById("result").innerHTML = coin;

    if (x = heads){
        document.write("you win!");
    } 
    else {
        document.write("you loose");
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM