亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用隨機密碼生成器

使用隨機密碼生成器

斯蒂芬大帝 2023-06-29 21:07:28
我正在嘗試使用以下代碼生成隨機密碼。當我運行它時,我變得未定義。我的“未定義”從何而來?**```// 賦值代碼   var charString = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklnmopqrstuvwxyz", "0123456789",  "~!@#$%^&*()-_=+"]; var userInput = []; var password = ""; var generateBtn = document.querySelector("#generate");    // Write password to the #password input  function writePassword() { password = generatePassword();   var passwordText = document.querySelector("#password");  passwordText.value = password; } // Character length prompt function generatePassword() {  var characterLength = 0   while ((characterLength < 8 || characterLength > 128) || Number.isInteger(characterLength) === false) { characterLength = parseInt(prompt("How many characters would you like your password to be? (8- 128)"));   }   var upper = false   var lower = false   var number = false    var symbol = false  while (!upper && !lower && !number && !symbol) {  // Uppercase pop up    upper = confirm("Click OK to confirm uppercase characters");   // Lowercase pop up   lower = confirm("Click OK to confirm lowercase characters");   // Numeric pop up   number = confirm("Click OK to confirm numeric characters");   // Special charcter  pop up  symbol = confirm("Click OK to confirm special characters (~!@#$%^&*()-_=+)");  }   if (upper) {      userInput += charString[0];   }   if (lower) {      userInput += charString[1]   }    if (number) {     userInput += charString[2]     }    if (symbol) {     userInput += charString[3]     }     var password = "";   for (var i = 1; i <= userInput.length; i++) {      var index = (Math.floor(Math.random) * userInput);     password = password + userInput[index]  }  return password}// Add event listener to generate button generateBtn.addEventListener("click", writePassword);```
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

我修復了你的代碼并在代碼片段中做了一些觀察


// Assignment Code


var charString = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklnmopqrstuvwxyz", "0123456789", "~!@#$%^&*()-_=+"];


var userInput = [];


var password = "";


var generateBtn = document.querySelector("#generate");


// Write password to the #password input

function writePassword() {

    password = generatePassword();

    var passwordText = document.querySelector("#password");


    passwordText.value = password;

}


// Character length prompt

function generatePassword() {

    var characterLength = 0

    while ((characterLength < 8 || characterLength > 128) || Number.isInteger(characterLength) === false) {

        characterLength = parseInt(prompt("How many characters would you like your password to be? (8-128)"));

    }


    var upper = false

    var lower = false

    var number = false

    var symbol = false


    while (!upper && !lower && !number && !symbol) {


        // Uppercase pop up

        upper = confirm("Click OK to confirm uppercase characters");


        // Lowercase pop up

        lower = confirm("Click OK to confirm lowercase characters");


        // Numeric pop up

        number = confirm("Click OK to confirm numeric characters");


        // Special charcter  pop up

        symbol = confirm("Click OK to confirm special characters (~!@#$%^&*()-_=+)");

    }


    // userInput is an array, so you should push values into it.

    if (upper) {

        userInput.push(charString[0]);

    }


    if (lower) {

        userInput.push(charString[1])

    }


    if (number) {

        userInput.push(charString[2])

    }


    if (symbol) {

        userInput.push(charString[3])

    }


    var password = "";


    // join all array elements into a single one, and then split in order

    // to get an array of characters

    userInput = userInput.join("").split("");


    // You should start your for statement at position 0, not 1

    // and I guess it should be < than characterLength, not userInput.length

    for (var i = 0; i < characterLength; i++) {

        // Math.random is a function so you were missing the parenthesis Math.random()

        // also Math.random() should be times userInput.length

        // so they should be inside the same parenthesis

        var index = (Math.floor(Math.random() * userInput.length));

        password = password + userInput[index]

    }


    return password

}


// Add event listener to generate button

generateBtn.addEventListener("click", writePassword);

<button id="generate">Generate</button>

<br>

<input type="text" id="password">


查看完整回答
反對 回復 2023-06-29
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

我對您的類型選擇進行了一些更改以避免無限循環。你的問題是你的隨機索引生成。就這樣:


var charString = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklnmopqrstuvwxyz", "0123456789", 

 "~!@#$%^&*()-_=+"];


var userInput = "";


var password = "";


var generateBtn = document.querySelector("#generate");


// Write password to the #password input

function writePassword() {

  var passwordText = document.querySelector("#password");

  password = generatePassword();

  passwordText.value = ''; // Clear prev value

  passwordText.value = password;

}


// Character length prompt

function generatePassword() {

  var characterLength = 0

  while ((characterLength < 8 || characterLength > 128) || Number.isInteger(characterLength) === 

false) {

  characterLength = parseInt(prompt(`How many characters would you like your password to be? (8 

128)`));

  }


  var upper = false

  var lower = false

  var number = false

  var symbol = false


  while (true) {

    // Uppercase pop up

    upper = confirm("Click OK to confirm uppercase characters");


    // Lowercase pop up

    lower = confirm("Click OK to confirm lowercase characters");


    // Numeric pop up

    number = confirm("Click OK to confirm numeric characters");


    // Special charcter  pop up

    symbol = confirm("Click OK to confirm special characters (~!@#$%^&*()-_=+)");


    break;

  }


  console.log('Using upper', upper);

  console.log('Using lower', lower);

  console.log('Using number', number);

  console.log('Using symbol', symbol);


  upper && (userInput += charString[0])


  lower && (userInput += charString[1])


  number && (userInput += charString[2])


  symbol && (userInput += charString[3])


  var password = "";


  for (var i = 0; i < characterLength; i++) {

    var index = Math.floor(Math.random() * userInput.length);

    password += userInput[index]

  }


  return password


}




// Add event listener to generate button

generateBtn.addEventListener("click", writePassword);

<button id="generate">Generate</button>

<input id="password"/>


查看完整回答
反對 回復 2023-06-29
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

改變

 var index = (Math.floor(Math.random) * userInput);

 var index = (Math.floor(Math.random() * userInput.length));


查看完整回答
反對 回復 2023-06-29
  • 3 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號