JavaScript 硬币翻转 "You Win/lose"消息不起作用

标签 javascript

我有这个抛硬币功能,到目前为止它正确显示“正面”或 随机“尾部”。不过,我希望每当硬币正面朝上时都会出现一条消息,说“你赢了”。但现在它只显示 无论硬币落在哪一面,“你都输了”。我该如何解决这个问题?

<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)以及它们为何存在问题的信息。

关于JavaScript 硬币翻转 "You Win/lose"消息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203560/

相关文章:

javascript - 在 jquery 自动完成中使用查找和/或服务 url

javascript - 仅滚动正文文档中的选定内容

javascript - 文本是否也被视为 DOM 中的节点?

asp.net - 为什么我的 asp.net 页面会被同步访问?

javascript - 带有行号的 HTML 自定义语法荧光笔

javascript - 如何在用户触发刷新按钮时重定向用户?

JavaScript 意外标记;

javascript - sinon 试图监视 express res 对象

javascript - SailsJS/水线 ORM : Update multiple entries using only one query

javascript - DataTables 行详细信息 row() undefined