我正在开发一个生成随机数的小项目,但似乎有问题。 发生器适用于单位数用户输入,但不适用于两位数。 例如, 如果用户输入12,则生成器将生成发生器将生成15位数的密码。 你可以在GitHub上看到代码: GitHub
JS CODE:
var results = document.getElementById("results");
var num;
var input;
var button = document.getElementById("gen");
var numb = "";
function getvalue(){
input = document.getElementById("user").value;
return input;
}
function randomNumber(upper){
return Math.floor(Math.random()*upper) + 1;
}
var nums = [];
button.addEventListener('click' , function() {
if(!getvalue() || getvalue() == 0){
results.innerHTML="<p>Your Have not entered any Value or Length<p>";
}
else{
var counter = 0;
while(counter<getvalue()){
var num = randomNumber(getvalue());
nums[counter] = num;
counter += 1;
}
numb = nums.join('');
results.innerHTML="<p>Your Password is :<p>" + numb;
numb = "";
nums = [];
}
});
答案 0 :(得分:0)
您的randomNumber
函数会生成介于1和upper
参数之间的随机数,该参数当前来自用户输入(randomNumber(getvalue());
),原因不同。因此,如果用户输入为10或更多,则生成的随机数可以是10或更多,从而导致密码字符串中包含“10”,其中只应有一个数字。
生成0到9之间的随机数:
var results = document.getElementById("results");
var button = document.getElementById("gen");
function getvalue() {
return document.getElementById("user").value;
}
function randomNumber(upper) {
return Math.floor(Math.random() * 10);
}
button.addEventListener('click', function() {
var nums = [];
const value = getvalue();
if (!value || value == 0) {
results.innerHTML = "<p>Your Have not entered any Value or Length<p>";
return;
}
var counter = 0;
while (counter < value) {
var num = randomNumber();
nums[counter] = num;
counter += 1;
}
const numb = nums.join('');
results.innerHTML = "<p>Your Password is :<p>" + numb;
console.log(numb.length);
});
<div id="cont">
<header>
<h1>Generate Your Random Password</h1>
<p class="one">This Application generates Random Password</p>
</header>
<section id="app">
<p id="2">Enter Desired Length :)
<p>
<input type="number" id="user">
<button id="gen">Generate</button>
<div id="results">
<p></p>
</div>
</section>
</div>