我只想产生一次随机值,并且如果我在函数内部产生随机值,则每当我调用函数时,由于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>
答案 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 />