Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的密码返回为未定义?_Javascript_Html - Fatal编程技术网

Javascript 为什么我的密码返回为未定义?

Javascript 为什么我的密码返回为未定义?,javascript,html,Javascript,Html,我目前正在学习Javascript。我相信代码运行良好。然而,当我尝试代码时,我没有得到一个随机密码返回给我。我有一个未定义的结果。 我已经添加了代码,我相信这要么是我的循环有问题,要么是第一个函数,函数writePassword有问题。 多谢各位 //分配代码 var generateBtn=document.querySelector(“#generate”); //包含从0到1的数字的数组 变量编号=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”]; /

我目前正在学习Javascript。我相信代码运行良好。然而,当我尝试代码时,我没有得到一个随机密码返回给我。我有一个未定义的结果。 我已经添加了代码,我相信这要么是我的循环有问题,要么是第一个函数,函数writePassword有问题。 多谢各位

//分配代码
var generateBtn=document.querySelector(“#generate”);
//包含从0到1的数字的数组
变量编号=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”];
//包含大写字母A到Z的数组
变量大写=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“X”、“Y”、“Z”];
//包含从a到z的小写字母的数组
变量小写=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“x”、“y”、“z”];
//包含密码特殊字符的数组
变量spChar=[“!”、“#”、“$”、“%”、“&”、“”、“(“、”、“*”、“+”、“、”、“/”、“\:”、“\”、“\;”、“<”、“=”、“>”、“?”、“@”、“[”、“\ \”、“]、“^”、“\”、“、“\”、“、”、“/”;
//此变量用于以后对变量进行浓缩
var选择;
//将密码写入#密码输入
函数writePassword(){
var password=generatePassword();
var passwordText=document.querySelector(“密码”);
passwordText.value=密码;
}
函数generatePassword(){
//下一行代码用于告诉用户添加值,如果用户没有添加正确的值,则会提醒用户。
var firstPrompt=prompt(“您希望您的密码有多长?请在8到128个字符之间选择”);
如果(!firstPrompt){
警报(“请添加值”);
}else if(firstPrompt<8 | | firstPrompt>128){
提示(“请添加大于8或小于128的值”);
}否则{
//下一行代码用于询问用户希望他们的密码是什么样的。
var secondPrompt=confirm(“您想要数字吗?”);
var thirdPrompt=confirm(“您想要特殊字符吗?”);
var fourthPrompt=confirm(“您想要大写字符吗?”);
var fifthPrompt=confirm(“您想要小写字符吗?”);
}
//如果没有为密码生成器选择任何选项,则使用下一行代码
如果(!secondPrompt&&!thirdPrompt&&!fourthPrompt&&!fifthPrompt){
警告(“请选择标准”);
}
//如果用户选择了密码的所有可用选项,则会显示这些代码行
else if(第二提示符和第三提示符和第四提示符和第五提示符){
choices=spChar.concat(数字、大写、小写);
}
//如果用户只选择3种不同的密码组合,则接下来的代码行是
else if(第二次提示和第三次提示和第四次提示){
选项=number.concat(大写,spChar);
}else if(第二次提示和第三次提示和第五次提示){
选项=number.concat(大写、小写);
}else if(第五提示符和第三提示符和第四提示符){
choices=lowerCase.concat(大写,spChar);
}
//仅当用户为其密码选择了两种不同的可能组合时,才显示下面几行代码
else if(第二个提示和第三个提示){
选项=number.concat(spChar);
}else if(第二次提示和第四次提示){
选项=number.concat(大写);
}else if(第二次提示和第五次提示){
选项=number.concat(小写);
}else if(第三次提示和第四次提示){
choices=spChar.concat(大写);
}else if(第三个提示和第五个提示){
choices=spChar.concat(小写);
}else if(第四提示符和第五提示符){
choices=大写.concat(小写);
}
//仅当用户仅为密码选择一个选项时,才显示下一行代码
else if(第二次提示){
选择=数量;
}如果有的话(第三份报告){
选项=spChar;
}else if(第四次提示){
选项=大写;
}else if(第五次提示){
选择=小写;
}
//将包含新空密码的空数组
var randomPassword=[];
//下一行代码是生成密码所需的循环
for(var i=0;igeneratePassword()似乎没有返回语句。可能需要添加:

return randomPassword;

到函数底部。

您没有从
generatePassword()
返回任何内容。它需要以

return randomPassword.join('');
将数组转换为字符串并将其返回给调用方

您还使字符集的选择比需要的复杂得多。将
选项
初始化为空数组,然后在每次提示后将适当的数组连接到该数组,而不是测试所有不同的答案组合

您声明了变量
choice
,但其余代码使用
choices


for
循环使用了
firstPrompt.value
,它应该是
firstPrompt
.value
用于获取输入元素的值,而不是变量)。此外,循环条件应使用
请使用比
firstPrompt
secondPrompt
等更有意义的变量名。提示,因为您“正在学习Javascript”-避免在声明中使用
var
;更喜欢
const
let
而不是…
const generateBtn=…
let i=0
是一个数组,它应该返回一个字符串。我意识到了这个问题(在我看来)是关于为什么代码中存在未定义的值而不是任何其他问题。海报上说他们正在学习,在学习过程中发现新错误可能比给出完整答案更有用。(可能是因为我不理解此留言板的目的。)