请问我能帮忙吗?
我需要从1到80的范围内选择一个非重复的随机数但不重复它。 而不是我的表单从我希望在java脚本中定义它的用户获取范围,并且在按下提交按钮时,它在文本区域中生成1到80范围内的非重复数字,就像这样的形式提交,清除和结果文本区域。
这是我的表单代码:
<form name="generate">
<table>
<tr>
<td colspan="2"><input TYPE="button" name="send_it" VALUE="ENTER" onClick="chooseRandom(this.form)"> <input TYPE="reset" VALUE="CLEAR" onClick="clearForm(this.form)"><br />
<br />
</td>
</tr>
<tr>
<td>Random Number: </td>
<td><input TYPE="text" NAME="result" SIZE="5"></td>
</tr>
</table>
</form>
这是我的java脚本:
<script type="text/javascript">
function chooseRandom(form) {
var m = parseInt(form.lower.value);
var n = parseInt(form.upper.value) - m;
var output = Math.floor(Math.random() * n) + m;
if (m < 0) {
alert('Enter # greater than 0');
}
if (n > 79) {
alert('Enter # less than 80');
}
form.result.value = output;
}
// Clears the form
function clearForm(form) {
form.upper.value="";
form.lower.value="";
form.upper.focus();
form.upper.select();
}
</script>
任何帮助都会感激不尽。 TYVY Jared Moore
答案 0 :(得分:3)
希望这就是你想要的:)我是新来回答这里的问题。
var rand = [];
for(var i = 1;i<=80;i++){
rand.push(i);
}
function getRand(){
var index = Math.floor(Math.random()*rand.length)
return rand.splice(index,1)
}
答案 1 :(得分:1)
我相信这就是你要找的东西。您将不得不使用ajax发布表单,以便不进行重置“usedNumbers”的页面刷新。
<form id="generate" name="generate">
<table>
<tr>
<td colspan="2"><input type="button" name="send_it" value="ENTER" onclick="chooseRandom(this.form)"> <input type="reset" value="CLEAR" onclick="clearForm(this.form)">
<br />
<br />
</td>
</tr>
<tr>
<td>Random Number: </td>
<td><input TYPE="text" NAME="result" SIZE="5"></td>
</tr>
</table>
</form>
和
<script>
function chooseRandom(form) {
form.result.value = getNonRepeatingRandomNumberWithinRange();
// Do ajax based post thereby preventing page refresh
}
var usedNumbers = [],
min = 1,
max = 80;
function getNonRepeatingRandomNumberWithinRange() {
// Generate random number within range
var num = Math.floor(Math.random() * max) + min;
// If number already used, try again (if all slots are used we return the number anyway)
if (contains(usedNumbers, num) && usedNumbers.length < max)
return getRand();
// Store number and return as value
return usedNumbers[usedNumbers.length - 1] = num;
}
// Helper function for determining if an array contains value
function contains(arr, obj) {
var i = arr.length;
while (i--) {
if (arr[i] === obj)
return true;
}
return false;
}
</script>