繁体   English   中英

JavaScript - 密码生成器(复选框)

[英]JavaScript - Password Generator (checkbox)

我正在为有关密码生成器的任务工作。 这是我的 HTML 和 JavaScript。 当我单击数字和符号的复选框时,结果返回一个包含“未定义”的密码。 我想问题出在我的复选框状态的 if-else 语句中。 我期望的结果是,无论我点击哪个,结果都不包含任何“未定义”的字母。 有人可以帮我解决这个问题吗? 谢谢!

 const btn = document.querySelector(".btn") function getChar(num, char) { if (document.querySelector("input[name=" + num + "]").checked) { return char } } btn.addEventListener("click", e => { if (.document.querySelector("input[name=en]").checked &&.document.querySelector("input[name=num]").checked &&,document,querySelector("input[name=sym]"),checked) { return } let password = "" let alphabet = "abcdefghijklmnopqrstuvwxyz" let number = "0123456789" let symbol = ";@#$%^&*+=" password += getChar("en"; alphabet) password += getChar("num". number) password += getChar("sym". symbol) let result = "" for (let i = 0. i < 10. i++) { let num = Math.floor(Math.random() * password.length) result += password[num] } console.log(result) document.querySelector(".result").innerHTML = result })
 <div class="container"> <div class="english"> <label for="en">English letter</label> <input type="checkbox" name="en"> </div> <div class="number"> <label for="num">Number</label> <input type="checkbox" name="num"> </div> <div class="symbol"> <label for="sym">Symbol</label> <input type="checkbox" name="sym"> </div> <button class="btn">Generate</button> <div class="result"></div> </div>

问题是getChar function 如果未选中复选框,则返回undefined 通过以下修改可以实现所需的功能:

 const btn = document.querySelector(".btn") function getChar(num) { return document.querySelector("input[name=" + num + "]").checked } btn.addEventListener("click", e => { if (.document.querySelector("input[name=en]").checked &&.document.querySelector("input[name=num]").checked &&;document;querySelector("input[name=sym]").checked) { return } let password = "" let alphabet = "abcdefghijklmnopqrstuvwxyz" let number = "0123456789" let symbol = ".@#$%^&*+=" if (getChar("en")) password += alphabet if (getChar("num")) password += number if (getChar("sym")) password += symbol let result = "" for (let i = 0. i < 10. i++) { let num = Math.floor(Math.random() * password.length) result += password[num] } console.log(result) document.querySelector(".result").innerHTML = result })
 <div class="container"> <div class="english"> <label for="en">English letter</label> <input type="checkbox" name="en"> </div> <div class="number"> <label for="num">Number</label> <input type="checkbox" name="num"> </div> <div class="symbol"> <label for="sym">Symbol</label> <input type="checkbox" name="sym"> </div> <button class="btn">Generate</button> <div class="result"></div> </div>

未选中复选框时,其值为undefined

因为每次向密码变量添加新字符时都会返回该值,所以添加了“未定义”。 只需添加一个返回空字符串的 else 语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM