2017-02-24 12 views
0

私はhtmlとjavascriptを使用して登録とログインフォームを作成しました。ここでは、ユーザーデータを配列に格納してからローカルストレージに格納します。このため私は最初にvar users = [];という空の配列を宣言しています。 したがって、ページがリロードされると、以前に格納されたデータは失われ、配列は再び空になり、ローカルストレージのデータは上書きされます。ページを再読み込みした後に配列が空にならないようにする方法については、助けてください。JavaScriptを使用して、ページがリロードされた場合でもデータを配列に保持する方法は?

後は、初期化時の私のcontroller.js-

//Declaring an empty array 
var users = []; 

//Setting id for each users 
var idInput = makeCounter(); 

//Fetching data from textboxes in register.html 
var firstnameInput = document.getElementById("firstname"); 
var lastnameInput = document.getElementById("lastname"); 
var emailInput  = document.getElementById("email"); 
var usernameInput = document.getElementById("username"); 
var passwordInput = document.getElementById("password"); 
var dobInput  = document.getElementById("dob"); 
var messageBox  = document.getElementById("editeddata"); 

//Declaring custom constructor function 
function userdetails(id, firstname, lastname, email, dob, username, password){ 
    this.id   = id; 
    this.firstname = firstname; 
    this.lastname = lastname; 
    this.email  = email; 
    this.dob  = dob; 
    this.username = username; 
    this.password = password; 
    this.FullName = this.firstname +' ' + this.lastname; 
} 

//counter funtion, to fetch user id 
function makeCounter() { 
    var arraylength=users.length; 
    return function(){ 
     return arraylength+1; 
    } 
} 

//insert data while registration 
function registerUser() 
{ 
    //Email validation 
    var emailinput = document.forms["myform"]["email"].value; 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    if(!(emailinput).match(emailReg) || emailinput=="") 
    { 
     alert("Not a valid e-mail address"); 
     return false; 

    } 
    //check, if fields are empty 
    if(firstnameInput.value=="" || lastnameInput.value=="" || passwordInput.value=="" || dobInput.value=="") 
    { 
     alert("Fields cannot be empty"); 
     return false; 
    } 

    //check, if a user already exist 
    var usernameinput = document.forms["myform"]["username"].value; 
    var passwordinput = document.forms["myform"]["password"].value; 
    var ulen= users.length; 
    for(i=0; i < ulen; i++) 
    { 
     if (usernameinput == users[i].username && passwordinput == users[i].password) 
     { 
      alert("User already exists"); 
      return false; 
     } 
    } 

    var user=new userdetails(idInput(),firstnameInput.value, lastnameInput.value, emailInput.value, dobInput.value, usernameInput.value, passwordInput.value); 
    users.push(user); 
    alert("Registered successfully"); 
    localStorage.setItem("key_users", JSON.stringify(users)); 

} 
+2

は、あなたは自分のlocalStorage内のデータが存在するかどうかを確認する必要があります。定義されていない場合は、空の配列として作成し、今行っている作業を正確に実行します。しかし、すでに存在する場合は、そのデータを使用し、空の配列を作成しないでください。 –

+2

ありがとうございました。 –

答えて

0

あなたが使用できるローカルストレージの値です。

if (typeof(Storage) !== "undefined") { 
    if (localStorage.key_users) { 
    users = localStorage.key_users; 
    } else { 
    users = []; 
    } 
} 
0

これは、キーがすでにlocalStorageにあるかどうかを確認するために使用できます。

<html> 
    <head> 

    <link href="style.css" rel="stylesheet"> 
    </head> 
    <body onload="test()"> 


    <script> 
    function test(){ 
     var value = (localStorage.getItem("key1")) 
     console.log(value) 
     if(value == null){ 
      localStorage.setItem("key1","value1") 
      alert("Hellow") 
     }else{ 
      var value=localStorage.getItem("key1"); 
      alert(value) 
     } 

    } 


    </script> 
    </body> 
</html> 
0

これを試してみてください:

localStorage.setItem("array", JSON.stringify(yourarray)); 
var retrievedData = localStorage.getItem("array"); 
var Variable = JSON.parse(retrievedData); 
alert(yourarray.length); 
関連する問題