问题描述
到目前为止,我一直在使用console.log()来确保我的代码在每个步骤中都可以正常工作,但是密码并没有像生成密码后那样在文本区域中显示。任何帮助都会很棒。
//javascript
var generateBtn = document.querySelector("#generate");
var specialCharacters = [
'@','%','+','\\','/',"'",'!','#','$','^','?',':',',')','(','}','{',']','[','~','-','_','.'
];
var upperCasedCharacters = [
'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'
];
var lowerCasedCharacters = [
'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'
];
var numericCharacters = ['0','1','2','3','4','5','6','7','8','9'];
var selectedCharacters = [];
// Write password to the #password input
function writePassword() {
var password = generatePassword();
var passwordText = document.querySelector("#password");
passwordText.value = password;
//prompt for password length
var passwordLength = prompt("Select a password length between 8 and 128");
//logic to ensure correct length selected
if (passwordLength >=8 && passwordLength <=128) {
console.log(passwordLength);
此控制台日志非常明显,只是为了确保已读取该值
//prompts for selecting character type
var LC = confirm("Use Lower case characters?");
var UC = confirm("Use Upper case characters?");
var N = confirm("Use Numeric characters?");
var SC = confirm("Use Special characters?");
//code to make sure a character is selected
if (LC == true || UC == true || N == true || SC == true){
if (LC == true) {
selectedCharacters += lowerCasedCharacters;
}
if (UC == true) {
selectedCharacters += upperCasedCharacters;
}
if (N == true) {
selectedCharacters += numericCharacters;
}
if (SC == true) {
selectedCharacters += specialCharacters;
}
console.log(selectedCharacters);
此控制台日志显示selectedChars数组的内容,以确认用户选择已正确更新
generatePassword(passwordLength);
}
else {
alert("Please select at least one character type");
}
}
//error message if incorrect values entered
else {
alert("Please enter a value between 8 and 128");
}
}
function generatePassword(length) {
var result = '';
var characters = selectedCharacters;
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charat(Math.floor(Math.random() * charactersLength));
}
console.log(result);
return result;
}
// Add event listener to generate button
generateBtn.addEventListener("click",writePassword);
这时,我让控制台日志按预期从创建的数组中返回了随机字符序列,但它们没有被发布到文本区域中
解决方法
您永远不会将文本字段的值设置为生成的密码。 假设您使用的是jQuery,并且您的文本字段ID为“ passwd”,则可以执行以下操作:
$("#passwd").val(generatePassword(passwordLength));
或者,如果您想使用javascript,可以使用:
document.getElementById("passwd").value = generatePassword(passwordLength);