2016-09-28 139 views
2

(我对JavaScript非常陌生,并且正在写这篇文章以尝试习惯使用它,这就是为什么我使用对象来存储用户名和密码的原因。这是学习的一部分,但这是在我自己的时间进一步我的知识JS) 我已经尝试写一小段代码,应该要求用户输入一个用户名,这将被交叉检查对象“userNames”中的属性名称。然后要求用户输入该用户的密码,然后使用正确的用户名将该密码与设置为相应属性值的密码进行核对。 我感觉好像问题的一部分是与我一起尝试使用“userNames”变量“enteredPassword”(设置为用户输入密码作为方法)。 如果3次尝试后用户名或密码不正确,我希望窗口关闭。 我的文本编辑器说If语句缺少一个分支,我不确定这是否影响这是否有效。如果/ Else语句嵌套在While循环中

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++ 
 
    }}

+1

了'if'语句 – 2016-09-28 13:50:39

+0

你是不是增加i后删除分号,所以我<3始终是真实的,你是科瑞成为一个无限循环 – StackOverMySoul

+0

由于'if-statement'之后的'分号',代码不会编译。分号关闭整个'if',所以'else'不再属于它 - >语法错误。它只被解释为只有一个命令的'if'的'短'。语法是这样的:'if(expression)command;'。你看,如果你只使用一个命令,不需要''''''''。一个没有任何别的东西被解释为一个空命令,所以if(expression); '完成'if'。 – Zabuza

回答

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++ 
 
    }}