JavaScript密码生成器创建奇怪的字符

时间:2017-06-22 11:26:03

标签: javascript arrays

我使用javascript创建了一个简单的密码生成器。

当您单击页面上的按钮时,它会为您创建一个密码并在下面显示。 此密码生成器创建一个包含以下内容的字符串:

来自a-z的8个随机字母。

0-9的2个随机数。

一个字符串数组中的1个随机特殊字符。 (参见数组'chars')。

但是,在您单击按钮几次后,最终将生成一个包含2个特殊字符的密码,其中包含“”。我很困惑,因为这个角色不在chars数组中。

为什么会这样,并且无论如何都要告诉JS不要特别包含那个角色?

function myFunction() {
  // create initial arrays.
  a = [];
  var chars = ['#', '%', '£', '!', '?', '&'];
  for (var i = 97; i <= 122; i++) {
    a[a.length] = String.fromCharCode(i).toUpperCase();

    // create random letters.
    var one = a[Math.floor(Math.random() * a.length)];
    var two = a[Math.floor(Math.random() * a.length)];
    var three = a[Math.floor(Math.random() * a.length)];
    var four = a[Math.floor(Math.random() * a.length)];
    var five = a[Math.floor(Math.random() * a.length)];
    var six = a[Math.floor(Math.random() * a.length)];
    var seven = a[Math.floor(Math.random() * a.length)];
    var eight = a[Math.floor(Math.random() * a.length)];

    // create random numbers.
    var int1 = Math.floor(Math.random() * 10);
    var int2 = Math.floor(Math.random() * 10);
    var ints = int1.toFixed(0) + int2.toFixed(0);
    var intsDecimal = int1.toFixed(0) + "." + int2.toFixed(0);

    // create random characters, based on array (chars).
    var randChar = chars[Math.floor(Math.random() * chars.length).toFixed(0)];

    // create variable moving all letters, numbers and characters together.
    var c = one + two + three + four + five + six + seven + eight + ints + randChar;
  }
  // display variable c.
  document.getElementById('userPass').innerHTML = c;
}
<p>Using simple JS to create a random password.</p>

<button onclick="myFunction()">CLICK</button>

<h4>Your password is:</h4>
<h3 id="userPass"></h3>

0 个答案:

没有答案