我使用窗口提示和 window.confirm 来询问用户是否要在密码中使用某些字符。 (我知道我可以用一些 HTML 来做复选框,但这必须是 JS)。
如何将确认答案传递给函数然后使用 Math.floor(Math.random() * length)
?
const key_strings = {
lowercase: 'abcdefghijklmnopqrstuvwxyz',
uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
number: '0123456789',
symbol: " !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~",
};
function generatePassword() {
passwordCharSet = "";
var length = window.prompt("Enter a number from 8 to 128 for password length.");
var lowercase = window.confirm("Would you like to use lowercase letters?");
if (lowercase == true) {
passwordCharSet += lowercase;
};
var uppercase = window.confirm("Would you like to use uppercase letters?");
if (uppercase == true) {
passwordCharSet += uppercase;
};
var symbols = window.confirm("Would you like to use symbols?");
if (symbols == true) {
passwordCharSet += symbols;
};
var numbers = window.confirm("Would you like to use numbers?");
if (numbers == true) {
passwordCharSet += numbers;
};
for (let i = 0; i < length; i++) {
_______________ Math.floor(Math.random() * length)
}
}
我也不知道 math.floor 还可以放什么。
最佳答案
您需要将 key_string
的属性连接到 passwordCharSet
,而不是对提示的响应。
获取随机字符时,需要索引passwordCharSet
并使用passwordCharSet.length
。
在key_strings.symbol
中,您需要转义"
和\
。
const key_strings = {
lowercase: 'abcdefghijklmnopqrstuvwxyz',
uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
number: '0123456789',
symbol: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
};
function generatePassword() {
var passwordCharSet = "";
var length = window.prompt("Enter a number from 8 to 128 for password length.");
var lowercase = window.confirm("Would you like to use lowercase letters?");
if (lowercase) {
passwordCharSet += key_strings.lowercase;
};
var uppercase = window.confirm("Would you like to use uppercase letters?");
if (uppercase) {
passwordCharSet += key_strings.uppercase;
};
var symbols = window.confirm("Would you like to use symbols?");
if (symbols) {
passwordCharSet += key_strings.symbol;
};
var numbers = window.confirm("Would you like to use numbers?");
if (numbers) {
passwordCharSet += key_strings.number;
};
var password = "";
for (let i = 0; i < length; i++) {
password += passwordCharSet[Math.floor(Math.random() * passwordCharSet.length)]
}
return password;
}
console.log(generatePassword());
关于javascript - 随 secret 码生成器 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021441/