2016-08-07 6 views
-2

ユーザー名を格納しているコンソールをコンソールに出力する配列を作成しようとしています。しかし、私がページをリフレッシュしてsubmitを押すと、前回のユーザー名はそこにはありません。私は意味のある変数名を持つことである最初のもののコードを持ついくつかの問題は、あると思いなぜローカルストレージは機能しませんか?

var users = []; 
function User(first_name, last_name, username, password, email,   birthday_month, birthday, birthday_year){ 
    this.first_name = first_name; 
    this.last_name = last_name; 
    this.username = username; 
    this.password = password; 
    this.email = email; 
    this.birthday_month = birthday_month; 
    this.birhday = birthday; 
    this.birthday_year = birthday_year; 
} 
var Msg = document.getElementById("Msg"); 
function Submit(){ 
    var a = document.forms["form"]["First_Name"].value; 
    var b = document.forms["form"]["Last_Name"].value; 
    var c = document.forms["form"]["Username"].value; 
    var d = document.forms["form"]["Password"].value; 
    var l = document.forms["form"]["Email"].value; 
    var month = document.forms["form"]["birthday_month"].value; 
    var day = document.forms["form"]["birthday"].value; 
    var year = document.forms["form"]["birthday_year"].value; 
    localStorage.setItem("fn", a); 

    var ln = localStorage.b; 
    var u = localStorage.c; 
    var p = localStorage.d; 
    var e = localStorage.l; 
    var m = localStorage.month; 
    var d = localStorage.day; 
    var y = localStorage.year; 


    if (ln == null || ln == "" || u == "" || u == null || p == "" || p == null || e == null || e == "" || m == "Month" || d == "Day" || y == "Year") { 
     Msg.textContent = "Please fill out all information correctly!"; 
     return false; 
    } else { 
     var account = new User(ln, u, p, e, m, d, y); 
     var wha = localStorage.getItem("fn"); 
     users.push(wha); 
     Msg.textContent = "Registration succesful!" 
     console.log(users); 
    } 

} 
+1

HTMLを投稿できますか?スニペットを作成すると、問題の診断に役立ちます。 – FrankerZ

+0

[変数を使用してオブジェクトプロパティに動的にアクセスする]の重複可能性があります(http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable) –

答えて

0

は、ここに私のコードです。命名変数a、b、c、dは問題を求めています。あなたの投稿機能で

var ln = localStorage.b; 
var u = localStorage.c; 
var p = localStorage.d; 
var e = localStorage.l; 
var m = localStorage.month; 
var d = localStorage.day; 
var y = localStorage.year; 

私はここで何が起こっているのかわかりません。これがローカルストレージに保存されているかローカルストレージから取得されていると思われる場合は間違いです。

ifステートメントの条件では、 "==="の代わりに "=="を使用して、JavaScriptが型を変換しないようにします。または ""

localStorageに保存するときは、そこに文字列を格納できるだけで、setItem(name、value)を使用できます。例

localStorage.setItem("firstName", "James"); 

のために、あなたは次のように実行して、その情報を取得できます。

var fname = localStorage.getItem("firstName"); 

を使用すると、オブジェクトを保存したい場合は、JSONを使用して行うことができる文字列に変換する必要があります。

var firstUser = new User("fname", "lname", "uname", "pass", "email", 12, 4, 2000); 

は、あなたがそのようにそれを保存することができます:

文字列化()、それでは、このユーザーを持っているとしましょう

その後、あなたは次のようにそれを取得することができます。

var storedUser = JSON.Parse(localStorage.getItem("firstUser")); 

を役に立てば幸い!

0

コードに間違いがあるようです。関数submint()のロジックは、この関数を実行するたびにformから一連のデータを取得し、fnlocalStorageの値をdocument.forms["form"]["First_Name"].valueの新しい値に設定するということです。ページを更新するとき

だから、仕事の流れが今、あなたは form内のデータを取得し、 localStorage.fnたびに上書きされます、 submit機能を打ちます。あなたは最後にあなたが保存する価値を決して localStorageに得ることはできません。

submit()機能を分離し、店舗のユーザー名の論理を分割し、ユーザー名を別々の機能に分けることができます。

+0

私が使用すべきコードの一部を表示してください。私は比較的新しいjsです –

+0

私はあなたの要件を明確にしていない、あなたはフォームを充填し、ページをリフレッシュした後に何をしたいですか? –

関連する問題