3

我创建了这个 javascript,它生成一个 0-20 范围内的随机数。我想要做的是创建一个文本字段,用户有 4 次尝试猜测生成的数字。我该怎么做?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<form><input name="code" id="code" type="text" value="" ></input>
<script type="text/javascript">
function makeid() {
    return Math.floor(Math.random() * 20)
}
</script>
<input type="button" style="font-size:9pt" value="Generate Code" onclick="document.getElementById('code').value = makeid()">
</input>
</form>
</body>
</html>
4

3 回答 3

1

您可以使用全局来跟踪状态。但是,这样做的安全性很弱,因为用户可以简单地重新加载页面来规避限制。那么你真正需要做的是在服务器端(例如数据库)跟踪状态,然后在浏览器上使用例如 Ajax Call 来进行检查:)

<script type="text/javascript">
var count = 0;
function makeid() {
    count++;
    if (count <= 4) {
      return Math.floor(Math.random() * 20);
    }
    alert('Out of attempts');
}
</script>

编辑 道歉,我只回答了你的问题的一半。

  <script type="text/javascript">
        var attempts = 0;
        var secretValue = makeid(); // Calculate the secret value once, and don't vary it once page is loaded
        function makeid() {
            return Math.floor(Math.random() * 20);
        }
        function checkId(userValue) {
            if (parseInt(userValue) == secretValue) {
                alert('Correct');
            }
            else {
                attempts++;
                if (attempts <= 4) {
                    alert('Wrong - try again');
                }
                else {
                    alert('Out of attempts');
                }
            }
        }
  </script>

然后将您的点击处理程序更改为

onclick="checkId(document.getElementById('code').value);"
于 2012-08-01T04:45:17.767 回答
0

一种方法是将生成的数字放入隐藏的元素中。记录尝试次数,当用户正确或达到 4 次尝试时,显示该值以及他们是否猜对了。也许还显示尝试次数。

包括一个重置按钮来重置计数器并生成一个新的隐藏值。

于 2012-08-01T04:41:45.290 回答
0

与其使用文本字段,不如尝试使用prompt()函数?以下是控制流的基本思想:

  1. 生成随机数并将其存储在变量中。
  2. 创建一些变量,如正确并将其设置为 false。
  3. 在for 循环中提示用户猜测(4 次迭代)
  4. 每次猜测后,检查猜测是否与您存储的数字相匹配。如果是,则在正确设置为 true后尽早跳出循环。
  5. 退出 for 循环后,根据正确的值提醒用户他们是赢还是输。
于 2012-08-01T04:56:38.473 回答