【问题标题】:Array and objects as a database数组和对象作为数据库
【发布时间】:2020-03-12 12:49:52
【问题描述】:

我正在做一个登录系统! 为了存储数据,我放置了一个带有对象的数组,就像一个数据库。 当我检查数据库中是否存在用户名和密码时,一切正常,但如果我再次检查,例如用户名和密码字段是否已填写,则它无法正常工作。 当我将此检查添加到任何然后当我输入现有的用户名和密码时,我会收到“错误用户名或密码”消息。

<input type="text" id='username'>
<input type="password" id='password'>
<input type="submit" id="submitlogin" value="Login" onclick="login()">
var database = [
        {
            username: "amr",
            password: "123",
        },
        {
            username: "asmr",
            password: "321",
        },
        {
            username: "amrik",
            password: "1234",
        }
]
function login (){
var user = document.getElementById('username').value;
var pass = document.getElementById('password').value;
for(var i = 0; i < database.length; i++)
{     if(user === "" && pass === "")
      {
         alert("enter username and password");
         return;
      }
      if(user === database[i].username && pass === database[i].password) {
        window.location.href = "index.html";
      } 
}
    alert("error username or password");
    return;
}

【问题讨论】:

    标签: javascript html arrays loops object


    【解决方案1】:

    也许使用变量来检查登录状态?

    function login (){
    var user = document.getElementById('username').value;
    var pass = document.getElementById('password').value;
    var loggedIn = 0;
    
    for(var i = 0; i < database.length; i++)
    {     if(user === "" && pass === "")
          {
             alert("enter username and password");
             return;
          }
          if(user === database[i].username && pass === database[i].password) {
            loggedIn = 1;
            window.location.href = "index.html";
          } 
    }
    
    if(loggedIn == 0)
    {
        alert("error username or password");
    }
    
        return;
    }
    

    https://jsfiddle.net/40wonL6y/

    【讨论】:

      【解决方案2】:

      考虑代码的结构:

      for(var i = 0; i < database.length; i++) {
          //...
      }
      alert("error username or password");
      

      此警报始终 会执行,因为没有条件不会执行。您似乎希望这会结束页面上代码的执行:

      window.location.href = "index.html";
      

      没有。

      最简单的更改可能只是在您的一种条件下执行您已经执行的操作,从函数返回:

      window.location.href = "index.html";
      return;
      

      另外,请注意,任何像这样的客户端“登录系统”纯粹是为了练习代码,不应该实际使用。用户在此处观察“数据库”并查看用户名/密码将是微不足道的。

      【讨论】:

        猜你喜欢
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多