密码生成器在文本框中返回"未定义"



我正在创建一个基于用户输入的简单密码生成器。我有所有的提示和确认显示和工作,但最终结果是"未定义"。

> var generateBtn = document.querySelector("#generate");
> var specialChar = ["!@#$%^&*()-=_+"];
> var lowerCase = ['abcdefghijklmnopqrstuvwxyz'];
> var upperCase = ['ABCDEFGHIJKLMNOPQRSTUVWXYZ'];
> var numbers = ['1234567890'];
> var passwordLen;
> var upperCase;
> var lowerCase;
> 
>  function checkpassLen() {
> var passwordLen = parseInt(prompt('How long should we make password? (8-128 characters'));
> confirm('You have selected ' + passwordLen + ' characters.');
> if (passwordLen > 128){
> alert('Too many characters selected. Please select a number between 8 and 128.');
> checkpassLen();
> 
> else if(passwordLen < 8){
> alert('Too few characters selected. Please select a number betweeen 8 and 128.');
> checkpassLen();
>   }
> else if (isNaN(passwordLen)){
> alert('Please enter a numerical value between 8 and 128.')
> checkpassLen();
>   }
> else{
> 
>   }
> return passwordLen
> }
>  
> 
>  function CheckspecChar(){
> specialChar = prompt('Would you like to include special characters? Type y or n.');
> confirm("You have selected " + specialChar + " for special characters.");
> if (specialChar === 'y') {
> console.log('Special characters selected.');
>     }
> else if (specialChar === 'n') { 
> console.log('No special characters included.');
>     }
> else {
> alert('Please enter y or n to choose.');
> specChar()
>     }
> return specialChar
>   }
> function checknumber(){
> numbers = prompt('Would you like to include numbers? Type y or n.');
> confirm("You have selected " + numbers + " for numbers.");
> if(numbers === 'y'){
> console.log('Numbers selected.');
>     }
> else if (numbers === 'n'){
> console.log('No numbers selected.');
> 
> else {
> alert('Please enter y or n to choose.');
> checknumber()
> 
>   }
> return numbers
> }
>  function checkCaselow(){
> lowerCase = prompt('Do you want to include lower case letters? Type y or n.');
> confirm("You have selected " + lowerCase + " lower case letters.");
> if(lowerCase === 'y'){
> console.log('Lower case letters selected.');
>     }
> else if ( lowerCase === 'n'){
> console.log('Lower case letters not selected.');
>   }
> else {
> alert('Please enter y or n to choose.');
> checkCaselow()
> 
>   }
> return lowerCase
> }
> function checkCaseupper(){
> upperCase = prompt('Do you want to include upper case letters? Type y or n');
> confirm("You have selected " + upperCase + " lower case letters.");
> if(upperCase === 'y'){
> console.log('Upper case letters selected.');
>     }
> else if ( upperCase === 'n'){
> console.log('Upper case letters not selected.');
>   }
> else {
> alert('Please enter y or n to choose.');
> checkCaseupper()
>   }
> return upperCase
> }
> Write password to the #password input
> function writePassword() {
> var password = generatePassword();
> var passwordText = document.querySelector("#password");
> 
> passwordText.value = password;
> 
> }
> function generatePassword() {
> var choiceIndex= [checkpassLen(), CheckspecChar(), checkCaseupper(), checkCaselow(), checknumber()];
> var passcheck =" ";
> for(var i = 0; i < passwordLen; i++) {
> var randomIndex = Math.floor(Math.random() * choiceIndex.length);  
> password = password + choiceIndex[randomIndex];
> return password;
> 
> }
> 
> Add event listener to generate button
> generateBtn.addEventListener("click", writePassword);`

我尝试将变量choiceIndex的值更改为变量名称而不是函数,这没有区别。我正在尝试将用户的输入存储并用于生成随机密码。

我修复了你的代码。你犯了一些错误。如果您对代码有任何疑问,请添加注释。

let generateBtn = document.querySelector("#generate");
let specialChar = "!@#$%^&*()-=_+";
let lowerCase = 'abcdefghijklmnopqrstuvwxyz';
let upperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let numbers = '1234567890';
function CheckPassLen() {
let passwordLen = parseInt(prompt('How long should we make password? (8-128 characters'));
confirm('You have selected ' + passwordLen + ' characters.');
if (passwordLen > 128) {
alert('Too many characters selected. Please select a number between 8 and 128.');
CheckPassLen();
} else if (passwordLen < 8) {
alert('Too few characters selected. Please select a number betweeen 8 and 128.');
CheckPassLen();
} else if (isNaN(passwordLen)) {
alert('Please enter a numerical value between 8 and 128.')
CheckPassLen();
}
return passwordLen;
}

function CheckSpecChar() {
let specialChar = prompt('Would you like to include special characters? Type y or n.');
confirm("You have selected " + specialChar + " for special characters.");
if (specialChar === 'y') {
console.log('Special characters selected.');
} else if (specialChar === 'n') {
console.log('No special characters included.');
} else {
alert('Please enter y or n to choose.');
CheckSpecChar();
}
return specialChar;
}
function CheckNumber() {
let numbers = prompt('Would you like to include numbers? Type y or n.');
confirm("You have selected " + numbers + " for numbers.");
if (numbers === 'y') {
console.log('Numbers selected.');
} else if (numbers === 'n') {
console.log('No numbers selected.');
} else {
alert('Please enter y or n to choose.');
CheckNumber();
}
return numbers;
}
function CheckCaseLow() {
let lowerCase = prompt('Do you want to include lower case letters? Type y or n.');
confirm("You have selected " + lowerCase + " lower case letters.");
if (lowerCase === 'y') {
console.log('Lower case letters selected.');
} else if (lowerCase === 'n') {
console.log('Lower case letters not selected.');
} else {
alert('Please enter y or n to choose.');
CheckCaseLow();
}
return lowerCase;
}
function CheckCaseUpper() {
let upperCase = prompt('Do you want to include upper case letters? Type y or n');
confirm("You have selected " + upperCase + " lower case letters.");
if (upperCase === 'y') {
console.log('Upper case letters selected.');
} else if (upperCase === 'n') {
console.log('Upper case letters not selected.');
} else {
alert('Please enter y or n to choose.');
CheckCaseUpper();
}
return upperCase;
}
// Write password to the #password input
function WritePassword() {
let password = GeneratePassword();
let passwordText = document.querySelector("#password");
passwordText.value = password;
}
function GeneratePassword() {
let choiceIndex = [CheckPassLen(), CheckSpecChar(), CheckCaseUpper(), CheckCaseLow(), CheckNumber()];
let characters = "";
let password = "";
if (choiceIndex[1] === 'y') {
characters = characters + specialChar;
}
if (choiceIndex[2] === 'y') {
characters = characters + upperCase;
}
if (choiceIndex[3] === 'y') {
characters = characters + lowerCase;
}
if (choiceIndex[4] === 'y') {
characters = characters + numbers;
}
for (let i = 0; i < choiceIndex[0]; i++) {
let randomIndex = Math.floor(Math.random() * characters.length);
password = password + characters[randomIndex];
}
return password;
}
// Add event listener to generate button
generateBtn.addEventListener("click", WritePassword);

最新更新