0

我似乎不知所措,无法继续执行这项任务。我一直在试图弄清楚如何随机生成密码,然后将结果发送到 passwordGeneration 函数。

   //Global Scope Password
var password = "";

var passwordGeneration = function() {
  // Call in Global Password here to send out at end
  password = "";

  //Create a function that will ask user for length of password. Note: Must be between 8 and 128 Chara long
  var lengthPassword = passwordLength();

  //Create a function that will determine all inclusions for Character Sets
  var passwordInclusions = charaInclusions();
};

//This is the function that will prompt for **password length**
var passwordLength = function() {
  //First, lets ask the user for the length of the password using a prompt
  var lengthPass = prompt("Enter Desired Length of New Password. Must Be Between 8 and 128 Characters Long.");

  //Next, lets validate the user input(Whether user entered invalid length or entered nothing at all)
  if (lengthPass < 8 || lengthPass > 128 || lengthPass === "") {
    alert("Invalid Length Entry. Length Must Be Between 8 and 128 Characters Long.")
    return passwordLength;
  }

  //This turns string into number. Note:refer to documentation if im still confused later.
  lengthPass = Math.floor(Number(lengthPass));

  //This will send data from this function to layout function!
  return lengthPass;
}

//Function That will determine included Character sets
var charaInclusions = function() {
  //String to send back inclusions at end
  var passwordInclusions = "";

  //Character Sets
  var lowerCase = "abcdefghijklmnopqrstuvwxyz";
  var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var numbers = "0123456789";
  var specialChara = "~`!@#$%^&*+<?/;:(=)|{";

  //Ask to include characters(Confirms or Prompts?)
  var confirmLower = confirm("Include Lower Case Characters?");
  var confirmUpper = confirm("Include Upper Case Characters");
  var confirmNumber = confirm("Inlcude Numbers?");
  var confirmSpecial = confirm("Include Special Characters?");

  //Validate Selections
  if (confirmLower == true) {
    passwordInclusions += lowerCase;
  }
  if (confirmUpper == true) {
    passwordInclusions += upperCase;
  }
  if (confirmNumber == true) {
    passwordInclusions += numbers;
  }
  if (confirmSpecial == true) {
    passwordInclusions += specialChara;
  }

  //Send back results
  return passwordInclusions;
}

// Assignment Code Ending
var generateBtn = document.querySelector("#generate");

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

  passwordText.value = password;

}

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

我将如何让密码随机生成?我到了这里,但我卡住了。我对此很陌生,这是我的第一个挑战。

4

1 回答 1

0

因此,使用Math.random() * passwordInclusions.lengthwhereMath.random() 将生成一个随机数(在范围内0-1及其包含范围内0)并且passwordInclusions.length是我们的passwordInclusions字符串的长度,这很容易实现。由于前面计算的结果将是十进制的,所以我们需要使用Math.floor才能得到一个整数(整数)。所以这个计算的乘积会给我们一个组合字符串中的随机索引。

Math.floor(Math.random() * passwordInclusionsLength)

最后,我们可以简单地选择一个带有 的字符charAt,因为前面的计算会给我们一个随机索引,所以我们可以从我们的字符串中得到一个随机字符。

passwordInclusions.charAt(Math.floor(Math.random() * passwordInclusionsLength))

然后使用传统的 forlengthPassword循环,我们可以生成一个从用户那里获得的具有所需长度( ) 的密码。

for (var i = 0; i < lengthPassword; i++) {
  password += passwordInclusions.charAt(Math.floor(Math.random() * passwordInclusionsLength));
}

所以最终的代码应该是这样的:

//Global Scope Password
var password = "";

var passwordGeneration = function() {
  // Call in Global Password here to send out at end
  password = "";

  //Create a function that will ask user for length of password. Note: Must be between 8 and 128 Chara long
  var lengthPassword = passwordLength();

  //Create a function that will determine all inclusions for Character Sets
  var passwordInclusions = charaInclusions();
  var passwordInclusionsLength = passwordInclusions.length;

  for (var i = 0; i < lengthPassword; i++) {
    password += passwordInclusions.charAt(Math.floor(Math.random() * passwordInclusionsLength));
  }

  return password;
};

//This is the function that will prompt for **password length**
var passwordLength = function() {
  //First, lets ask the user for the length of the password using a prompt
  var lengthPass = prompt("Enter Desired Length of New Password. Must Be Between 8 and 128 Characters Long.");

  //Next, lets validate the user input(Whether user entered invalid length or entered nothing at all)
  if (lengthPass < 8 || lengthPass > 128 || lengthPass === "") {
    alert("Invalid Length Entry. Length Must Be Between 8 and 128 Characters Long.")
    return passwordLength;
  }

  //This turns string into number. Note:refer to documentation if im still confused later.
  lengthPass = Math.floor(Number(lengthPass));

  //This will send data from this function to layout function!
  return lengthPass;
}

//Function That will determine included Character sets
var charaInclusions = function() {
  //String to send back inclusions at end
  var passwordInclusions = "";

  //Character Sets
  var lowerCase = "abcdefghijklmnopqrstuvwxyz";
  var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var numbers = "0123456789";
  var specialChara = "~`!@#$%^&*+<?/;:(=)|{";

  //Ask to include characters(Confirms or Prompts?)
  var confirmLower = confirm("Include Lower Case Characters?");
  var confirmUpper = confirm("Include Upper Case Characters");
  var confirmNumber = confirm("Inlcude Numbers?");
  var confirmSpecial = confirm("Include Special Characters?");

  //Validate Selections
  if (confirmLower == true) {
    passwordInclusions += lowerCase;
  }
  if (confirmUpper == true) {
    passwordInclusions += upperCase;
  }
  if (confirmNumber == true) {
    passwordInclusions += numbers;
  }
  if (confirmSpecial == true) {
    passwordInclusions += specialChara;
  }

  //Send back results
  return passwordInclusions;
}

// Assignment Code Ending
var generateBtn = document.querySelector("#generate");

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

  passwordText.value = password;

}

// Add event listener to generate button
generateBtn.addEventListener("click", writePassword);
<button id="generate">generate</button>
<input id="password" value="" />

于 2020-07-01T06:37:34.197 回答