如何仅产生1次随机值

时间:2019-05-07 13:19:28

标签: javascript html css

我只想产生一次随机值,并且如果我在函数内部产生随机值,则每当我调用函数时,由于Random方法会再次运行并创建新值,因此x变量会发生变化。

然后,我创建一个全局变量并为其分配随机方法。此时随机方法运行1次,全局变量的值保持不变。但是我想根据输入来定义范围。在这种情况下,我无法在随机方法运行之前接受用户输入。

那我该怎么办? 用户应定义随机范围,但x变量应仅取一个时间值。

因为我将在另一个方法中使用此x变量。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Test</title>
    <link rel="stylesheet" href="jscss.css" />
</head>
<script>var size = document.getElementById("size"); var x = Math.floor(Math.random(size) * (5)) + 1; function afunc() { alert(x); }</script>
<body>
    <input type="number" id="size"><br /> <button onclick="afunc()">Submit</button><br />
</body>
</html>

1 个答案:

答案 0 :(得分:1)

var x;
function changeSize(){
  var size = document.getElementById("size").value; 
  x = Math.floor(Math.random(size) * (5)) + 1; 
  console.log("size:",size,"X:",x);
}
function afunc() { alert(x); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<input type="number" id="size" onchange="changeSize();"><br /> 
<button onclick="afunc()">Submit</button><br />

编辑:对于变量x仅加载一次

var x;
function changeSize(){
  var size = document.getElementById("size").value; 
  if(!x){
    x = Math.floor(Math.random(size) * (5)) + 1; 
  }
  console.log("size:",size,"X:",x);
}
function afunc() { alert(x); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<input type="number" id="size" onchange="changeSize();"><br /> 
<button onclick="afunc()">Submit</button><br />