2016-06-20 6 views
0

私は配列オブジェクトを持っていますので、別のユーザー名とパスワードを追加することができます。ユーザー名またはパスワードが存在しない場合、自動的に作成されます。私は私の配列オブジェクトは次のように働くだろうと思った:のUserInfo [0] [ "ユーザー名"]はuser1です、のUserInfoは、[1] [ "ユーザー名"] user2がある、など ここjsfiddleです: https://jsfiddle.net/xkxn54bx/オブジェクトに新しい値を追加

HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <link rel="stylesheet" href="style.css"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 
    <script src="test.js"></script> 
    <title>Generation X</title> 
</head> 
<body> 
    <form method="post"> 
    <label for="username">Username:</label><input type="text" name="user_name" id="username"><br /> 
    <label for="password">Password:</label><input type="password" name="pass-word" id="password"> 
    <input type="submit" id="submitbutton" value="Access"> 
    </form> 
</body> 
</html> 

JS:

var userInfo = [ 
    { username: "admin", password: "test" } 
]; 

function addUser(username, password) { 
    userInfo[userInfo.length + 1]["username"] = username; 
    userInfo[userInfo.length + 1]["password"] = password; 
} 

$(document).ready(function() { 
    $('#submitbutton').click(function() { 
     var username = $('#username').val(); 
     var password = $('#password').val(); 
     for (i = 0; i < userInfo.length; i++) { 
      if (username == '' || password == '') { 
       alert("All fields are required!"); 
      } 
      else if (username == userInfo[i]["username"]) { 
       if (password == userInfo[i]["password"]) { 
        alert("Welcome"); 
       } 
       else { 
        alert("You have entered an invalid password!"); 
       } 
      } 
      else { 
       addUser(username, password); 
       alert("Account created!"); 
      } 
     } 
    }); 
}); 

答えて

1

それに新しいオブジェクトを追加するとき、私は、あなたが正しく配列にアクセスしているかはわかりません。長さは常に最後のインデックスより1であり、それはあなたが新しいオブジェクトに移入する索引ですので

function addUser(username, password) { 
    userInfo[userInfo.length - 1]["username"] = username; 
    userInfo[userInfo.length - 1]["password"] = password; 
} 

:それはようでなければなりません。あなたが代わりに使用する場合:

userInfo [userInfo.length + 1] ["username"] = username;

次に、1つのインデックスをスキップしています。 また、最初にそのインデックスにオブジェクトを作成することをお勧めします。

+0

ありがとうございます。私はこのメッセージが表示されます:TypeError:userInfo [userInfo.length]は定義されていません –

+0

コンソールのuserInfoの任意の値を参照できますか? userInfo.lengthはどうですか? – Sean12

+0

私は変数のように長さを定義しました:var userLength = userInfo.length; –

関連する問題