随机密码生成器Javascript不起作用

艾伦·胖

我正在尝试创建一个随机密码生成器,以要求用户输入8-128个字符,然后确认使用大写,小写,符号和/或数字。我正在尝试获取密码以在文本区域中生成和打印,我知道我遗漏了一些东西,但是我不确定。我为粗略的代码表示歉意。我才刚开始。

var plength = prompt("How many characters would you like your password to be?")

if (plength < 8 || plength > 128){
    alert("Length must be 8-128 characters")
}

if (plength >= 8 && plength <= 128){
var cuppercase = confirm("Would you like to use uppercase letters?")
var clowercase = confirm("Would you like to use lowercase letters?")
var cnumbers = confirm("would you like to use numbers?")
var csymbols = confirm("would you like to use special characters?")
}    

if (cuppercase != true && clowercase != true && cnumbers != true && csymbols != true){
    alert("You must select at least one character type!")
}

//DOM elements
const resultEl = document.getElementById('password');




document.getElementById('generate').addEventListener('click', () => {	
	const hasLower = clowercase.true;
	const hasUpper = cuppercase.true;
	const hasNumber = cnumbers.true;
	const hasSymbol = csymbols.true;
	resultEl.innerText = generatePassword(hasLower, hasUpper, hasNumber, hasSymbol, length);
});






const randomFunc = {
	lower: getRandomLower,
	upper: getRandomUpper,
	number: getRandomNumber,
	symbol: getRandomSymbol
}

document.getElementById('clipboard').addEventListener('click', () => {
	const textarea = document.createElement('textarea');
	const password = resultEl.innerText;
	
	if(!password) { return; }
	
	textarea.value = password;
	document.body.appendChild(textarea);
	textarea.select();
	document.execCommand('copy');
	textarea.remove();
	alert('Password copied to clipboard');
});


function generatePassword(lower, upper, number, symbol, length) {
	let generatedPassword = '';
    const typesCount = lower + upper + number + symbol;
	const typesArr = [{lower}, {upper}, {number}, {symbol}].filter(item => Object.values(item)[0]);

 	// create a loop
     for(let i=0; i<length; i+=typesCount) {
		typesArr.forEach(type => {
			const funcName = Object.keys(type)[0];
			generatedPassword += randomFunc[funcName]();
		});
	}
	
	const finalPassword = generatedPassword.slice(0, length);
	
	return finalPassword;
}

// Generator functions

function getRandomLower() {
	return String.fromCharCode(Math.floor(Math.random() * 26) + 97);
}

function getRandomUpper() {
	return String.fromCharCode(Math.floor(Math.random() * 26) + 65);
}

function getRandomNumber() {
	return +String.fromCharCode(Math.floor(Math.random() * 10) + 48);
}

function getRandomSymbol() {
	const symbols = '!@#$%^&*(){}[]=<>/,.'
	return symbols[Math.floor(Math.random() * symbols.length)];
}
        <header>
          <h1 class="text-center" style= "margin-top: 20px;">Password Generator</h1>
        </header>
        
        <div class="card shadow-sm p-3 mb-5 bg-white rounded" style="max-width: 60%; margin: 40px auto;">
                <div class="card-body">
                  <h2 class="card-title">Generate a Password</h2>
                  <textarea 
                  style= "width: 100%; text-align:center; resize:none; border: dashed 2px lightgrey; margin:30px auto; padding: 10px auto; min-height: 100px;" 
    
                  readonly
                  id="password"
                  placeholder="Your Secure Password"
                  aria-label="Generated Password"
                ></textarea>
               
        <button type="button" class="btn btn-danger" id= "generate" style= "float:left; border-radius:40px; padding-right: 30px; padding-left: 30px;">Generate Password</button>
        <button type="button" class="btn btn-light" id= "clipboard" style= "float:right;  border-radius:40px; padding-right: 30px; padding-left: 30px; background-color: silver; color:white">Copy to clipboard</button>
    </div>
    </div>

亚伦·普洛恰奇克(Aaron Plocharczyk)

更新:

我一直在向这个问题提出类似的问题,所以我想我会写一些更简洁的代码让他们在这里看到:

var length = Number(prompt("How many characters would you like your password to be?"));
while (isNaN(length) || length < 8 || length > 128) length = Number(prompt("Length must be 8-128 characters. How many characters would you like your password to be?"));

var uppers = confirm("Would you like to use uppercase letters?");
var lowers = confirm("Would you like to use lowercase letters?");
var numbers = confirm("Would you like to use numbers?");
var symbols = confirm("Would you like to use special characters?");

while (!uppers && !lowers && !numbers && !symbols) {
  alert("You must select at least one character type!");
  uppers = confirm("Would you like to use uppercase letters?");
  lowers = confirm("Would you like to use lowercase letters?");
  numbers = confirm("Would you like to use numbers?");
  symbols = confirm("Would you like to use special characters?");
}

window.addEventListener('load', function() {
  generateNewPassword();
});

function generateNewPassword() {
  var password = "";

  var allowed = {};
  if (uppers) password += rando(allowed.uppers = "QWERTYUIOPASDFGHJKLZXCVBNM");
  if (lowers) password += rando(allowed.lowers = "qwertyuiopasdfghjklzxcvbnm");
  if (numbers) password += rando(allowed.numbers = "1234567890");
  if (symbols) password += rando(allowed.symbols = "!@#$%^&*(){}[]=<>/,.");

  for (var i = password.length; i < length; i++) password += rando(rando(allowed).value);

  document.getElementById("password").value = randoSequence(password).join("");
}
<script src="https://randojs.com/1.0.0.js"></script>
<input type="text" id="password"/>
<button onclick="generateNewPassword();">Generate new password</button>

我使用randojs.com使随机性变得简单易读,就像我在最初对这个问题的回答中所做的那样。如果您需要对此进行解释,请访问该站点。只需添加:

<script src="https://randojs.com/1.0.0.js"></script>

在您的head标签中,以便能够使用randojs函数。


老答案:

您缺少一些分号。您应该等到页面加载完成后,通过包装以下内容来访问元素:

window.addEventListener('load', function (){

});

您应该获取textarea的值,而不是它的innerText。我还在开始时为提示/确认添加了循环,以强制用户再次尝试,直到他们提供有效的输入为止。除此之外,我只是整理了一下格式。我使用randojs.com使随机性更易于阅读。如果您需要对此进行解释,请访问该站点。我刚刚添加了这个:

<script src="https://randojs.com/1.0.0.js"></script>

在您的head标签中,以便能够使用randojs函数。如果您有任何问题,请告诉我。

window.addEventListener('load', function() {
  var plength = prompt("How many characters would you like your password to be?");

  while (plength < 8 || plength > 128) {
    plength = prompt("Length must be 8-128 characters. How many characters would you like your password to be?");
  }

  var cuppercase = confirm("Would you like to use uppercase letters?");
  var clowercase = confirm("Would you like to use lowercase letters?");
  var cnumbers = confirm("would you like to use numbers?");
  var csymbols = confirm("would you like to use special characters?");

  while (!(cuppercase || clowercase || cnumbers || csymbols)) {
    alert("You must select at least one character type!");

    cuppercase = confirm("Would you like to use uppercase letters?");
    clowercase = confirm("Would you like to use lowercase letters?");
    cnumbers = confirm("would you like to use numbers?");
    csymbols = confirm("would you like to use special characters?");
  }

  //DOM elements
  const resultEl = document.getElementById('password');

  document.getElementById('generate').addEventListener('click', () => {
    resultEl.value = generatePassword(clowercase, cuppercase, cnumbers, csymbols, plength);
  });

  document.getElementById('clipboard').addEventListener('click', () => {
    const textarea = document.createElement('textarea');
    const password = resultEl.value;

    if (!password) {
      return;
    }

    textarea.value = password;
    document.body.appendChild(textarea);
    textarea.select();
    document.execCommand('copy');
    textarea.remove();
    alert('Password copied to clipboard');
  });
});


const randomFunc = {
  lower: getRandomLower,
  upper: getRandomUpper,
  number: getRandomNumber,
  symbol: getRandomSymbol
};

function generatePassword(lower, upper, number, symbol, length) {
  let generatedPassword = '';
  const typesCount = lower + upper + number + symbol;
  const typesArr = [{
    lower
  }, {
    upper
  }, {
    number
  }, {
    symbol
  }].filter(item => Object.values(item)[0]);

  // create a loop
  for (let i = 0; i < length; i += typesCount) {
    typesArr.forEach(type => {
      const funcName = Object.keys(type)[0];
      generatedPassword += randomFunc[funcName]();
    });
  }

  const finalPassword = generatedPassword.slice(0, length);

  return finalPassword;
}

// Generator functions
function getRandomLower() {
  return rando("qwertyuiopasdfghjklzxcvbnm")
}

function getRandomUpper() {
  return rando("QWERTYUIOPASDFGHJKLZXCVBNM");
}

function getRandomNumber() {
  return rando(9);
}

function getRandomSymbol() {
  return rando('!@#$%^&*(){}[]=<>/,.');
}
<html>
  <head>
    <script src="https://randojs.com/1.0.0.js"></script>
  </head>
  <body>
    <header>
      <h1 class="text-center" style="margin-top: 20px;">Password Generator</h1>
    </header>
    <div class="card shadow-sm p-3 mb-5 bg-white rounded" style="max-width: 60%; margin: 40px auto;">
      <div class="card-body">
        <h2 class="card-title">Generate a Password</h2>
        <textarea style="width: 100%; text-align:center; resize:none; border: dashed 2px lightgrey; margin:30px auto; padding: 10px auto; min-height: 100px;" readonly id="password" placeholder="Your Secure Password" aria-label="Generated Password"></textarea>
        <button type="button" class="btn btn-danger" id="generate" style="float:left; border-radius:40px; padding-right: 30px; padding-left: 30px;">Generate Password</button>
        <button type="button" class="btn btn-light" id="clipboard" style="float:right;  border-radius:40px; padding-right: 30px; padding-left: 30px; background-color: silver; color:white">Copy to clipboard</button>
      </div>
    </div>
  </body>
</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

随机密码生成器javascript不返回密码

来自分类Dev

JavaScript在随机报价生成器中不起作用

来自分类Dev

Yii代码生成器密码不起作用

来自分类Dev

随机数生成器检查不起作用

来自分类Dev

随机密码生成器重击

来自分类Dev

Python v3(随机密码生成器)

来自分类Dev

随机密码生成器使用

来自分类Dev

随机密码生成器Swift 3?

来自分类Dev

VS 中的随机密码生成器 - Python 3

来自分类Dev

JavaScript字符串生成器不起作用

来自分类Dev

令牌生成器不起作用

来自分类Dev

PHP中的随机密码生成器未返回密码

来自分类Dev

PHP中的随机密码生成器未返回密码

来自分类Dev

随机数生成器的最小和最大范围,不起作用?

来自分类Dev

朱莉娅随机数生成器不起作用

来自分类Dev

Python-为什么我的随机数生成器不起作用?

来自分类Dev

我在 C 中的随机字符串生成器不起作用

来自分类Dev

传递对象方法并在函数外部调用这些方法。随机密码生成器

来自分类Dev

随机密码生成器:在Linux中,在命令行中有很多(按列)

来自分类Dev

随机密码生成器的C ++循环错误“以非零状态退出”

来自分类Dev

Haskell列表生成器中的生成器不起作用

来自分类Dev

无限序号生成器在python中不起作用?

来自分类Dev

生成器功能不起作用python

来自分类Dev

Laravel 查询生成器 whereIn 不起作用

来自分类Dev

Unity 2017 - 气球生成器不起作用?

来自分类Dev

为什么此javascript函数生成器不起作用?

来自分类Dev

为什么我的随机密码生成器生成了我需要的多个字符?

来自分类Dev

为什么我的随机颜色生成器的JS代码在浏览器中不起作用

来自分类Dev

JavaScript密码生成器数值问题

Related 相关文章

热门标签

归档