【问题标题】:Why is My Random Number in Javascript Code Concatenating Rather Than Adding?为什么我的 Javascript 代码中的随机数是连接而不是添加?
【发布时间】:2019-03-26 11:47:02
【问题描述】:

我正在编写一个基本的随机数生成器(通过 freeCodeCamp 进行自学,打算用它和我的两个小男孩玩游戏)。我使用的是基本 HTML,没有添加 CSS 作为 DOM 和 Javascript 客户端的功能(客户端,因为我最大的孩子是 5 岁,我们有一个他喜欢向人们展示的家庭博客)。

问题在于下面的代码工作到一定程度 - Math 随机函数很好,它可以很好地与 Math.floor 一起工作,并且乘法 *(最大 - 最小 +1)都按预期工作。

问题是最后一段不起作用:+ 最小值。从我看到的结果来看,公式正在生成一个结果,直到并包括括号中的乘法,但最后连接最小值,而不是将其添加到结果中。

当我第一次发现问题时,我已经通过 parseInt 将最大值和最小值转换为整数,以防出现问题(我不明白为什么,因为它们在乘法括号中都可以正常工作),但是当然没有区别。

 function randomNumberFunction(maximum, minimum) {
  var numRan;
  var maximum = document.getElementById("maximum").value;
  var minimum = document.getElementById("minimum").value;
  parseInt(maximum);
  parseInt(minimum);
    
  numRan = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
  alert(numRan);
}
<div id="dice">
  <form name="randomDice">
    <h1>Get a random number</h1>
    <p>Maximum</p>
    <input id="maximum" type="number" name="random"><br>
    <p>Minimum</p>
    <input id="minimum" type="number" name="random"><br>
    <br>
    <button onclick="randomNumberFunction()">Get a random number</button>
  </form>

</div>

我希望能够捕获用户输入的最小值和最大值,并从该范围内生成一个随机整数。相反,当我输入 min 1、max 4 或 21 时,我会得到类似 01 的值。当输入 min 3、max 10 时,我会得到 63。

【问题讨论】:

  • 将解析分配给变量本身:minimun = parseInt(minimun)。对maximum做同样的事情
  • 我不知道为什么以前没有为我点击 - 完美。感谢您帮助新手!

标签: javascript html


【解决方案1】:

当你转换最小和最大变量时,你没有赋值

试试这个:

function randomNumberFunction(maximum, minimum) {
  var numRan;
  var maximum = document.getElementById("maximum").value;
  var minimum = document.getElementById("minimum").value;
  maximum = parseInt(maximum);
  minimum = parseInt(minimum);

  numRan = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
  alert(numRan);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多