我一直在尝试创建一个密码生成器,我有这个代码,它正在返回" undefined"不是一个角色。该代码应返回16个字符,包括数字,低位和高位字符。我想拥有这个,这样我就不用担心自己制作自己的密码了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PassGen</title>
<script>
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function num2lett(num) {
switch (num) {
case (num > 36):
return String.fromCharCode(577 + num - 35);
break;
case (num > 10 && num < 37):
return String.fromCharCode(97 + num - 11);
break;
case (num == 10):
return "0";
break;
case (num < 10):
return "" + num;
break;
}
}
function uuidMake() {
var uuid = "";
for (u = 0; u < 16; u++) {
randNum = getRandomInt(0, 62);
uuid += num2lett(randNum);
}
document.getElementById("password").innerHTML = uuid;
}
</script>
<style>
@font-face {
font-family: "uuid_font";
src: url("Courier Prime Code.ttf") format("TrueType");
}
body {
background-color: #262626;
}
#password {
font-family: "uuid_font";
text-align: center;
font-size: 30px;
color: #dddddd;
margin-top: 250px;
}
</style>
<body>
<p id="password" onclick="uuidMake();">Click Me</p>
</body>
</html>
&#13;
答案 0 :(得分:2)
这不是switch
的好用例。使用if
和else
语句。
case
语句中的switch
是您switch
表达式的特定可能值。例如,人们可能会写一些类似的东西:
switch (n) {
case 1:
// things to do when n is 1
break;
case 3:
case 4:
// things to do when n is 3 or 4
break;
default:
// things to do when n is neither 1, 3, nor 4
}
case
语句不能是一系列值。建议不要将表达式用作case
- 它不是无效,但它可能无法达到预期效果。
答案 1 :(得分:1)
你不能像if else一样使用case语句,所以只要使用if else条件,就像下面的例子一样。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function num2lett(num) {
if (num > 36)
return String.fromCharCode(577 + num - 35);
else if (num > 10 && num < 37)
return String.fromCharCode(97 + num - 11);
else if (num == 10)
return "0";
else if (num < 10)
return "" + num;
}
function uuidMake() {
var uuid = "";
for (u = 0; u < 16; u++) {
randNum = getRandomInt(0, 62);
uuid += num2lett(randNum);
}
document.getElementById("password").innerHTML = uuid;
}
@font-face {
font-family: "uuid_font";
src: url("Courier Prime Code.ttf") format("TrueType");
}
body {
background-color: #262626;
}
#password {
font-family: "uuid_font";
text-align: center;
font-size: 30px;
color: #dddddd;
margin-top: 250px;
}
<p id="password" onclick="uuidMake();">Click Me</p>
我不知道你的算法是什么,所以我只是将你的算法转换为if else
答案 2 :(得分:1)
在switch
块中,您已在case
中编写了条件语句。
您不能在switch
块中使用条件语句。因此,在您的情况下,case
都没有执行。由于您没有default
块,因此您的函数不返回任何内容,如果javascript为undefined
。因此,您将获得undefined
答案 3 :(得分:0)
您可以更改switch语句以使其正常工作。在switch中传递'true'并从case条件中删除括号
switch (true) {
case num > 36: