2016-06-20 3 views
0

나는 배열 객체를 가지고 있으므로 다른 사용자의 추가 사용자 이름과 암호를 추가 할 수 있습니다. 사용자 이름 또는 비밀번호가 존재하지 않으면 자동으로 생성됩니다. 내 배열 객체는 다음과 같이 작동합니다 생각 : https://jsfiddle.net/xkxn54bx/객체에 새 값 추가

HTML : 사용자 정보는 [0] [ "사용자 이름"] 3 jsfiddle 여기에 사용자 1, 사용자 정보는 [1] [ "사용자 이름"]는 사용자 2 등 입니다 :

<!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

잘 모르겠어요. 길이 이후

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

마지막 인덱스보다 항상 하나 더하고 당신이 새 개체로 채우려 인덱스이다 : 그것은이 있어야합니다. 대신 다음을 사용하는 경우 :

userInfo [userInfo.length + 1] [ "username"] = 사용자 이름;

그런 다음 하나의 색인을 건너 뜁니다. 또한 먼저 해당 색인에서 개체를 만드는 것이 좋습니다.

+0

감사합니다. 이 메시지가 나타납니다 : TypeError : userInfo [userInfo.length] 정의되지 않았습니다 –

+0

콘솔에서 userInfo에 대한 값을 볼 수 있습니까? userInfo.length는 어떻습니까? – Sean12

+0

다음과 같이 변수의 길이를 정의했습니다. var userLength = userInfo.length; –

관련 문제