作为一个小小的爱好我正在创建一个随机数生成器工具,使用javascript math.random
脚本和一个要求最小数量和最大数量的html表单。但我遇到的问题是,有时最小数量被设置为零用户输入的内容。这是我的HTML代码:
<form id="form" onsubmit="return false;">
<input type="text" id="minNumber" value="Minimum number" onfocus="if (this.value == 'Minimum number') {this.value = '';}" onblur="if ( this.value == '') " />
<input type="text" id="maxNumber" value="Maximum number" onfocus="if (this.value == 'Maximum number') {this.value = '';}" onblur="yes" />
<input type="submit" onclick="getNumber()" value="Get random number">
</form>
这是我的JavaScript代码:
function getNumber() {
var minNumber = document.getElementById("minNumber").value;
var maxNumber = document.getElementById("maxNumber").value;
var randomnumber = Math.floor(Math.random() *( + maxNumber) + minNumber);
alert("Your random number is: " + randomnumber);
}
我尝试了几种修复方法,包括:
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
此示例返回指定值之间的随机整数。该值不低于min(如果min不是整数,则大于min的下一个整数),并且小于(但不等于)max。
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}
使用舍入来实现这一点可能很诱人,但这样做会导致您的随机数遵循非均匀分布,这可能是您无法接受的。
您应该使用addEventListener
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
function getNumber() {
var minNumber = Number(document.getElementById("minNumber").value);
var maxNumber = Number(document.getElementById("maxNumber").value);
var randomnumber = Math.floor((Math.random() * (maxNumber - minNumber)) + minNumber);
document.getElementById("output").innerText = "Your random number is: " + randomnumber;
}
<form id="form" onsubmit="return false;">
<input type="text" id="minNumber" value="2" onblur="getNumber()" />
<input type="text" id="maxNumber" value="10" onblur="getNumber()" />
<input type="submit" onclick="getNumber()" value="Get random number">
</form>
<span id="output"></span>