Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示未定义的随机密码生成器_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 显示未定义的随机密码生成器

Javascript 显示未定义的随机密码生成器,javascript,arrays,for-loop,Javascript,Arrays,For Loop,尝试为我所在的类创建一个随机密码生成器,在大多数情况下,一切正常。除了一个事实,当我试图生成一个密码,它只会说“未定义”。下面是JS。如能尽快提供帮助,我们将不胜感激 const generateBtn = document.querySelector("#generate"); function writePassword() { const password = generatePassword(); const passwordText = document

尝试为我所在的类创建一个随机密码生成器,在大多数情况下,一切正常。除了一个事实,当我试图生成一个密码,它只会说“未定义”。下面是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);

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,而不是随机的。几个小时来我一直在努力让它发挥作用,所以我的大脑有点紧张,对此我深表歉意。看看我的答案。非常感谢。现在终于可以工作了。这是上帝派来的。