(我对JavaScript非常陌生并且正在编写此代码以尝试并习惯使用它更多 - 这就是我使用对象存储用户名和密码的原因。我正在学习这个作为学徒期的一部分,但这是在我自己的时间来进一步了解JS) 我尝试编写一小段代码,要求用户输入用户名,该用户名将与对象" userNames "中的属性名称进行交叉检查。然后要求用户输入该用户的密码,然后根据设置为具有正确用户名的相应属性的值的密码进行检查。 我觉得好像问题的一部分是我试图使用变量" enteredPassword " (设置为用户输入的密码作为方法)" userNames "。 如果3次尝试后用户名或密码不正确,那么我希望窗口关闭。 我的文本编辑器说If语句缺少一个分支,我不确定这是否影响这是否有效。
var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"};
var Greeting = "Insert Username:";
var i = 0;
while (i < 3)
{
var enteredUserName = prompt(Greeting);
var enteredPassword = prompt("enter password for " + enteredUserName);
if ((userNames.hasOwnProperty(enteredUserName)) && (userNames.enteredUserName==enteredPassword)) {
alert("Welcome");
break;
} else {
alert("incorrect Username or Password");
alert("");
window.open('', '_self', ''); window.close();
window.open('', '_self', ''); window.close();
i++
}}
&#13;
答案 0 :(得分:0)
这里有一个简单的改变:
userNames[enteredUserName]
。
在JavaScript
中,Object
也可以像array
一样访问
如果您使用userNames.enteredUserName
,则会检查{enteredUserName:somevalue}
(即,enteredUserName
将被视为String
。但如果您将其用作userNames[enteredUserName]
,则enteredUserName
将被视为Object
的变量和索引
请尝试以下代码段。
var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"};
var Greeting = "Insert Username:";
var i = 0;
while (i < 3)
{
var enteredUserName = prompt(Greeting);
var enteredPassword = prompt("enter password for " + enteredUserName);
if ((userNames.hasOwnProperty(enteredUserName)) && (userNames[enteredUserName]==enteredPassword)) {
alert("Welcome");
break;
} else {
alert("incorrect Username or Password");
alert("");
window.open('', '_self', ''); window.close();
window.open('', '_self', ''); window.close();
i++
}}
&#13;