JavaScript随机数生成器不适用于具有两位数的数字

时间:2018-06-03 08:41:40

标签: javascript

我正在开发一个生成随机数的小项目,但似乎有问题。 发生器适用于单位数用户输入,但不适用于两位数。 例如, 如果用户输入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 = [];
    }
});

1 个答案:

答案 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>