2015-11-04 47 views
1

我正在为一个类做一个简单的ATM,我需要做一个登录功能,锁定你3次尝试后,现在,它似乎被卡住要求你的用户,并通过,直到你跑出于尝试。如果成功的话,应该叫我的菜单功能和添加一些文字,我使用的日志你做的,而在记录的操作的堆栈。登录功能卡在循环

function login(pin_daniel,pin_stephanie,pin_cano,log){ 
 
    var ingreso = false; 
 
    var intentos = 1; 
 
    while (intentos != 3 && ingreso == false){ 
 
     var usuario = prompt("Bienvenido a CanoBank, su banco de `confianza`, por favor ingrese su usuario y pin\n"+ 
 
      "Usuario:"); 
 
     var pin_login = prompt("PIN:"); 
 
     if (usuario == 'daniel' && pin_login == pin_daniel){ 
 
      ingreso = true; 
 
      menu(daniel_dinero_ahorro,daniel_dinero_monetaria); 
 
      log.push(usuario + "entro al sistema" + Date.now()) 
 
     } 
 
     else if (usuario == 'stephanie' && pin_login == pin_stephanie){ 
 
      ingreso = true; 
 
      menu(stephanie_dinero_ahorro,stephanie_dinero_monetaria); 
 
      log.push(usuario + "entro al sistema" + Date.now()) 
 
     } 
 
     else if (usuario == 'cano' && pin_login == pin_cano){ 
 
      ingreso = true; 
 
      menu(cano_dinero_ahorro,cano_dinero_monetaria); 
 
      log.push(usuario + "entro al sistema" + Date.now()) 
 
     } 
 
     else{ 
 
      console.log("Usuario o PIN incorrecto, tiene" + (3 - intentos) + "oportunidades"); 
 
      intentos = intentos + 1; 
 
     } 
 
    } 
 

 
} 
 
login();

+0

尝试将您的条件(usuario == user && pin_login == pin_user)拆分为单独的检查以尝试查找问题。由于我们不知道pin_logins的值,也不知道“提示”功能是如何工作的,所以我们无能为力。 – vincent

+0

提示与其他语言的输入相同,现在引脚仅为1234,我试图将它作为真正的登录名,您必须匹配它才能让您进入, –

+0

在您的登录()函数中,您不会似乎没有传入密码? – vincent

回答

0

尝试改变:

login(); 

到:

login('1234','1234','1234', log); 

你需要在变量传递包含实际引脚,因此与用户提供的输入的比较是有效的。

当然,这不是在实践中应该如何去做。这只是一个说明如何使用函数的例子。

0

我不理解你的问题。

但是如果你的问题是:“为什么我的日志不包含日志记录,当它退出菜单时成功?”

答案是:“因为Javascript是连续的,并且如果登录成功,菜单函数在追加到日志之前被调用,您需要等待菜单函数返回,添加您的行日志,试着做相反的,这将是确定”

+0

谢谢你的顺序位,不记得那个,我的问题是:我有一个登录名,如果你登录错误3次,应该排除,但现在它被困在一个循环,它会要求你登录和即使你是对的,也会继续询问,直到你达到这个极限并将你踢出去。 –