Javascript 显示未定义的随机密码生成器
尝试为我所在的类创建一个随机密码生成器,在大多数情况下,一切正常。除了一个事实,当我试图生成一个密码,它只会说“未定义”。下面是JS。如能尽快提供帮助,我们将不胜感激Javascript 显示未定义的随机密码生成器,javascript,arrays,for-loop,Javascript,Arrays,For Loop,尝试为我所在的类创建一个随机密码生成器,在大多数情况下,一切正常。除了一个事实,当我试图生成一个密码,它只会说“未定义”。下面是JS。如能尽快提供帮助,我们将不胜感激 const generateBtn = document.querySelector("#generate"); function writePassword() { const password = generatePassword(); const passwordText = document
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);
const generateBtn=document.querySelector(“#generate”);
函数writePassword(){
const password=generatePassword();
const passwordText=document.querySelector(“密码”);
passwordText.value=密码;
}
函数generatePassword(){
let lower=“abcdefghijklmnopqrstuvxyz”
设lowerArr=lower.split(“”);
let upper=“abcdefghijklmnopqrstuvxyz”;
设upperArr=upper.split(“”);
让num=“0123456789”;
设numar=num.split(“”);
让spec=“!@#$%^&*()\+?”;
设specArr=spec.split(“”);
设allChars=[];
让密码=”;
让pwlength=prompt(“选择密码长度:8-128个字符”);
如果(pwlength<8 | | pwlength>128){
警报(“密码必须介于定义的长度之间。”)
generatePassword()
}
if(确认(“您想要小写字符吗?”){
所有字符推送(较低);
}
if(确认(“您想要大写字符吗?”){
所有字符推送(上箭头);
}
如果(确认(“您是否需要数字字符?”){
所有字符推送(努马尔);
}
如果(确认(“您想要特殊字符吗?”){
所有字符推送(specArr);
}
if(allChars.length==0){
警报(“必须至少选择一种字符类型”);
generatePassword()
}
for(设i=0;i
首先,不要推动拆分的字符数组,只需按如下方式对其进行处理:
allChars=allChars.concat(较低)代码>
下一步:
for循环中的Math.floor()
函数错误。您必须将其与allChars
数组的长度相结合,并将字符与密码变量相关联:
for (let i = 0; i < pwlength; ++i) {
let random = Math.floor(Math.random() * Math.floor(allChars.length));
password += allChars[random];
}
for(设i=0;i
let random=Math.floor(Math.random().length)代码>-也许您打算使用allChars
数组的长度?我不认为这条线正在做你期望它做的…现在肯定在正确的轨道上,我真的很感激。刚才我得到的是这样的a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,而不是随机的。几个小时来我一直在努力让它发挥作用,所以我的大脑有点紧张,对此我深表歉意。看看我的答案。非常感谢。现在终于可以工作了。这是上帝派来的。