Javascript 随机密码生成器

Javascript 随机密码生成器,javascript,Javascript,我试图生成一个随机密码与以下代码,我有。当我运行它时,我没有定义 我的“未定义”来自哪里** ``` //分配代码 var charString = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklnmopqrstuvwxyz", "0123456789", "~!@#$%^&*()-_=+"]; var userInput = []; var p

我试图生成一个随机密码与以下代码,我有。当我运行它时,我没有定义

我的“未定义”来自哪里**

```
//分配代码

   var charString = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklnmopqrstuvwxyz", "0123456789", 
 "~!@#$%^&*()-_=+"];


 var userInput = [];

 var password = "";

 var generateBtn = document.querySelector("#generate");

    // Write password to the #password input
  function writePassword() {
 password = generatePassword();
   var passwordText = document.querySelector("#password");

  passwordText.value = password;

 }

 // Character length prompt
 function generatePassword() {
  var characterLength = 0
   while ((characterLength < 8 || characterLength > 128) || Number.isInteger(characterLength) === 
false) {
 characterLength = parseInt(prompt("How many characters would you like your password to be? (8- 
128)"));

   }

   var upper = false
   var lower = false
   var number = false
    var symbol = false

  while (!upper && !lower && !number && !symbol) {

  // Uppercase pop up
    upper = confirm("Click OK to confirm uppercase characters");

   // Lowercase pop up
   lower = confirm("Click OK to confirm lowercase characters");

   // Numeric pop up
   number = confirm("Click OK to confirm numeric characters");

   // Special charcter  pop up
  symbol = confirm("Click OK to confirm special characters (~!@#$%^&*()-_=+)");

  }

   if (upper) {
      userInput += charString[0];

   }

   if (lower) {
      userInput += charString[1]

   }


    if (number) {
     userInput += charString[2]

     }


    if (symbol) {
     userInput += charString[3]

     }

     var password = "";

   for (var i = 1; i <= userInput.length; i++) {
      var index = (Math.floor(Math.random) * userInput);
     password = password + userInput[index]
  }

  return password

}



// Add event listener to generate button
 generateBtn.addEventListener("click", writePassword);


```
var charString=[“abcdefghijklmnopqrstuvxyz”,“abcdefghijklnmopqrstuvwxyz”,“0123456789”,
"~!@#$%^&*()-_=+"];
var userInput=[];
var password=“”;
var generateBtn=document.querySelector(“#generate”);
//将密码写入#密码输入
函数writePassword(){
密码=generatePassword();
var passwordText=document.querySelector(“密码”);
passwordText.value=密码;
}
//字符长度提示
函数generatePassword(){
变量characterLength=0
而((characterLength<8 | | characterLength>128)| | Number.isInteger(characterLength)==
(错误){
characterLength=parseInt(提示(“您希望密码包含多少个字符?”(8-
128)"));
}
var上限=假
var lower=false
var编号=false
var symbol=false
而(!upper&&!lower&&!number&&!symbol){
//大写弹出框
upper=确认(“单击确定确认大写字符”);
//小写弹出框
lower=确认(“单击确定确认小写字符”);
//数字弹出窗口
数字=确认(“单击确定确认数字字符”);
//特殊字符弹出窗口
symbol=确认(“单击“确定”确认特殊字符(~!@$%^&*()-\)”;
}
如果(上){
userInput+=charString[0];
}
如果(较低){
userInput+=字符串[1]
}
如果(数字){
userInput+=charString[2]
}
如果(符号){
userInput+=charString[3]
}
var password=“”;
对于(变量i=1;i变化


我修复了您的代码,并在代码片段中进行了一些观察

//分配代码
var charString=[“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,“abcdefghijklnmopqrstuvwxyz”,“0123456789”,“~!@$%^&*()-\=+”];
var userInput=[];
var password=“”;
var generateBtn=document.querySelector(“#generate”);
//将密码写入#密码输入
函数writePassword(){
密码=generatePassword();
var passwordText=document.querySelector(“密码”);
passwordText.value=密码;
}
//字符长度提示
函数generatePassword(){
变量characterLength=0
while((characterLength<8 | | characterLength>128)| | Number.isInteger(characterLength)==false){
characterLength=parseInt(提示(“您希望密码包含多少个字符?(8-128)”);
}
var上限=假
var lower=false
var编号=false
var symbol=false
而(!upper&&!lower&&!number&&!symbol){
//大写弹出框
upper=确认(“单击确定确认大写字符”);
//小写弹出框
lower=确认(“单击确定确认小写字符”);
//数字弹出窗口
数字=确认(“单击确定确认数字字符”);
//特殊字符弹出窗口
symbol=确认(“单击“确定”确认特殊字符(~!@$%^&*()-\)”;
}
//userInput是一个数组,因此您应该将值推入其中。
如果(上){
push(charString[0]);
}
如果(较低){
userInput.push(字符串[1])
}
如果(数字){
userInput.push(字符串[2])
}
如果(符号){
userInput.push(字符串[3])
}
var password=“”;
//将所有数组元素合并为一个数组元素,然后按顺序拆分
//获取字符数组的步骤
userInput=userInput.join(“”).split(“”);
//应该在位置0而不是1处开始for语句
//我猜它应该小于characterLength,而不是userInput.length
对于(变量i=0;i
生成


我对您的类型选择进行了一些更改,以避免出现无限循环。您的问题是随机生成索引。现在开始:

var charString=[“abcdefghijklmnopqrstuvxyz”,“abcdefghijklnmopqrstuvwxyz”,“0123456789”,
"~!@#$%^&*()-_=+"];
var userInput=“”;
var password=“”;
var generateBtn=document.querySelector(“#generate”);
//将密码写入#密码输入
函数writePassword(){
var passwordText=document.querySelector(“密码”);
密码=generatePassword();
passwordText.value='';//清除上一个值
passwordText.value=密码;
}
//字符长度提示
函数generatePassword(){
变量characterLength=0
而((characterLength<8 | | characterLength>128)| | Number.isInteger(characterLength)==
(错误){
characterLength=parseInt(提示(`您希望密码包含多少个字符?(8
128)`));
}
var上限=假
var lower=false
var编号=false
var symbol=false
while(true){
//大写弹出框
upper=确认(“单击确定确认大写字符”);
//小写弹出框
lower=确认(“单击确定确认小写字符”);
//数字弹出窗口
数字=确认(“单击确定确认数字字符”);
//特殊字符弹出窗口
symbol=确认(“单击“确定”确认特殊字符(~!@$%^&*()-\)”;
打破
}
console.log('使用上限',上限);
console.log(‘使用较低的’,较低的);
console.log('使用编号',编号);
console.log('使用符号',符号);
上限&(userInput+=charString[0])
下限&(userInput+=charString[1])
数字&(userInput+=charString[2])
符号&(userInput+=charString[3])
var passwor
 var index = (Math.floor(Math.random) * userInput);
 var index = (Math.floor(Math.random() * userInput.length));