【发布时间】:2020-08-30 00:01:36
【问题描述】:
尝试为我所在的课程创建一个随机密码生成器,并且在大多数情况下一切正常。除了当我尝试生成密码时它最终只会说“未定义”这一事实。 JS如下。我们将不胜感激尽快提供帮助。
const generateBtn = document.querySelector("#generate");
function writePassword() {
const password = generatePassword();
const passwordText = document.querySelector("#password");
passwordText.value = password;
}
function generatePassword() {
let lower = "abcdefghijklmnopqrstuvwxyz"
let lowerArr = lower.split("");
let upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let upperArr = upper.split("");
let num = "0123456789";
let numArr = num.split("");
let spec = "!@#$%^&*()_+?<>";
let specArr = spec.split("");
let allChars = [];
let password = "";
let pwlength = prompt("Choose password length: 8-128 characters.");
if (pwlength < 8 || pwlength > 128) {
alert("Password must be between defined length.")
generatePassword()
}
if (confirm("Do you want lowercase characters?")) {
allChars.push(lowerArr);
}
if (confirm("Do you want uppercase characters?")) {
allChars.push(upperArr);
}
if (confirm("Do you wamt numeric characters?")) {
allChars.push(numArr);
}
if (confirm("Do you want special characters?")) {
allChars.push(specArr);
}
if (allChars.length === 0) {
alert("Minimum of one type of character must be chosen");
generatePassword()
}
for (let i = 0; i < pwlength; ++i) {
let random = Math.floor(Math.random().length);
password = allChars[random];
}
return password;
}
generateBtn.addEventListener("click", writePassword);
【问题讨论】:
-
let random = Math.floor(Math.random().length);- 也许您打算使用allChars数组的长度?我不认为这条线正在做你期望它做的事情......
标签: javascript arrays for-loop