【问题标题】:Why isn't my JS code working? I'm trying to get this code to generate a random password为什么我的 JS 代码不起作用?我正在尝试获取此代码以生成随机密码
【发布时间】:2021-10-17 15:42:30
【问题描述】:

编辑:进行了一些更改,现在当我单击生成密码时,我返回“未定义”。进步!

编辑#2:现在当我单击时我没有得到“未定义”,但 devtools 在第 26 行说我超过了最大调用堆栈。我该如何解决?

Javascript 真的很难,伙计。我正在尝试获取此代码以生成随机密码。当我单击生成密码按钮时,没有任何反应。 Chrome 开发工具没有显示任何问题。我一周前刚开始学习javascript。我需要添加更多细节来发布这个......我想我只是把我在这里“学到”的所有东西都扔进去了,所以它可能真的搞砸了。

// Assignment code here
var length;
var number;
var specialCharacter;
var upperCase;
var lowåerCase;
var selection;
var lettersUp

const characters = ["number", "letters", "character"];

number = "0123456789";
letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
character = "!@#$%^&*)(";
// Get references to the #generate element
var generateBtn = document.querySelector("#generate");
// Write password to the #password input
function writePassword() {
  var password = generatePassword();
  var passwordText = document.querySelector("#password");

  passwordText.value = password;
}
// Begin setting password parameters
function generatePassword() {
  document.getElementById("click", generatePassword); {
    for ( let i = 0; i < length; i++ ) {
      console.log(password);
    }
  }

  // Select # of characters for new password
  length = prompt("Enter the number of characters you'd like for your new password (Select a number between 8-128)");
  if (!length) {
    alert("Please make a valid entry");
  } else if (length < 8 || length > 128) {
    // Function recognizes incorrect input
    length = prompt("New password must be from 8-128 characters");
  } else {
    // Prompts continue when length input is valid
    number = confirm("Include numbers in your new password?");
    specialCharacter = confirm("Include special characters in your new password?");
    upperCase = confirm("Include uppercase letters?");
    lowerCase = confirm("Include lowercase letters?");
  };
  // for all of the above true
  if (number && specialCharacter && upperCase && lowerCase) {
    selection = character.concat(number,letters,lettersUp);
  }
  // three options selected
  else if (number && specialCharacter && upperCase) {
    selection = character.concat(number, lettersUp);
  }
  else if (specialCharacter && upperCase && lowerCase) {
    selection = character.concat(letters, lettersUp);
  }
  else if (upperCase && lowerCase && number) {
    selection = lettersUp.concat(letters, number);
  }
  else if (lowerCase && number && specialCharacter) {
    selection = letters.concat(number, character);
  }
  //two options selected
  else if (specialCharacter && number) {
    selection = character.concat(number);
  }
  else if (number && upperCase) {
    selection = number.concat(lettersUp);
  }
  else if (upperCase && lowerCase) {
    selection = lettersUp.concat(letters);
  }
  else if (lowerCase && number) {
    selection = letters.concat(number);
  }
  else if (lowerCase && specialCharacter) {
    selection = letters.concat(character);
  }
  else if (specialCharacter && upperCase) {
    selection = character.concat(lettersUp);
  }
  //one option
  else if (specialCharacter) {
    selection = character;
  }
  else if (number) {
    selection = number;
  }
  else if (lowerCase) {
    selection = letters;
  }
  else if (upperCase) {
    selection = lettersUp;
  };

  
}

generatePassword();

// Add event listener to generate button
generateBtn.addEventListener("click", writePassword);
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Password Generator</title>
    <link rel="stylesheet" href="./assets/css/style.css" />
</head>
<body>
  <div class="wrapper">
    <header>
      <h1>Password Generator</h1>
    </header>
    <div class="card">
      <div class="card-header">
        <h2>Generate a Password</h2>
      </div>
      <div class="card-body">
        <textarea
          readonly
          id="password"
          placeholder="Your Secure Password"
          aria-label="Generated Password"
        ></textarea>
      </div>
      <div class="card-footer">
        <button id="generate" class="btn">Generate Password</button>
      </div>
    </div>
  </div>
  <script src="./assets/js/script.js"></script>
</body>
</html>

【问题讨论】:

  • 什么是charactersLengthdocument.getElementById("click", generatePassword); { 应该做什么?
  • 我想我修好了? // 开始设置密码参数 function generatePassword() { document.getElementById("click", generatePassword); { for ( let i = 0; i
  • 你肯定想要document.getElementById('generate').addEventListener('click', () =&gt; {...});
  • document.getElementById 只接受一个参数,即所需元素的 id。它不执行任何功能

标签: javascript passwords generator


【解决方案1】:

您忘记返回generatePassword()。另外我猜你忘了初始化lettersUp。我为你修好了。也许您想打乱字符串并使用substr 之后仅提取具有一定长度的子字符串。另外提醒一下,您的 lowerCase 变量中最初有一个奇怪的字符。仔细检查是否有意这样做。

// Assignment code here
var length;
var number;
var specialCharacter;
var upperCase;
var lowerCase;
var selection;
var lettersUp

const characters = ["number", "letters", "character"];

number = "0123456789";
letters = "abcdefghijklmnopqrstuvwxyz";
lettersUp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
character = "!@#$%^&*)()";
// Get references to the #generate element
var generateBtn = document.querySelector("#generate");
// Write password to the #password input
function writePassword() {
  var password = generatePassword();
  var passwordText = document.querySelector("#password");
  passwordText.value = password;
}
// Begin setting password parameters
function generatePassword() {
  // Select # of characters for new password
  length = prompt("Enter the number of characters you'd like for your new password (Select a number between 8-128)");
  if (!length) {
    alert("Please make a valid entry");
  } else if (length < 8 || length > 128) {
    // Function recognizes incorrect input
    length = prompt("New password must be from 8-128 characters");
  } else {
    // Prompts continue when length input is valid
    number = confirm("Include numbers in your new password?");
    specialCharacter = confirm("Include special characters in your new password?");
    upperCase = confirm("Include uppercase letters?");
    lowerCase = confirm("Include lowercase letters?");
  };
  // for all of the above true
  if (number && specialCharacter && upperCase && lowerCase) {
    selection = character.concat(number, letters, lettersUp);
  }
  // three options selected
  else if (number && specialCharacter && upperCase) {
    selection = character.concat(number, lettersUp);
  } else if (specialCharacter && upperCase && lowerCase) {
    selection = character.concat(letters, lettersUp);
  } else if (upperCase && lowerCase && number) {
    selection = lettersUp.concat(letters, number);
  } else if (lowerCase && number && specialCharacter) {
    selection = letters.concat(number, character);
  }
  //two options selected
  else if (specialCharacter && number) {
    selection = character.concat(number);
  } else if (number && upperCase) {
    selection = number.concat(lettersUp);
  } else if (upperCase && lowerCase) {
    selection = lettersUp.concat(letters);
  } else if (lowerCase && number) {
    selection = letters.concat(number);
  } else if (lowerCase && specialCharacter) {
    selection = letters.concat(character);
  } else if (specialCharacter && upperCase) {
    selection = character.concat(lettersUp);
  }
  //one option
  else if (specialCharacter) {
    selection = character;
  } else if (number) {
    selection = number;
  } else if (lowerCase) {
    selection = letters;
  } else if (upperCase) {
    selection = lettersUp;
  };
  return selection;
}

// Add event listener to generate button
generateBtn.addEventListener("click", writePassword);
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Password Generator</title>
    <link rel="stylesheet" href="./assets/css/style.css" />
</head>
<body>
  <div class="wrapper">
    <header>
      <h1>Password Generator</h1>
    </header>
    <div class="card">
      <div class="card-header">
        <h2>Generate a Password</h2>
      </div>
      <div class="card-body">
        <textarea
          readonly
          id="password"
          placeholder="Your Secure Password"
          aria-label="Generated Password"
        ></textarea>
      </div>
      <div class="card-footer">
        <button id="generate" class="btn">Generate Password</button>
      </div>
    </div>
  </div>
  <script src="./assets/js/script.js"></script>
</body>
</html>

【讨论】:

  • 嗨@serpothos,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 2019-06-04
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
相关资源
最近更新 更多