2017-12-07 1 views
0

私のコードには少し問題があります。他の機能にプッシュされたセッションストア内のアイテムを保存する

私は値を格納する配列を持っており、それらをsessionStorageに格納する必要があります。

document.getElementById("submit-button").addEventListener("click", book, false); 

var array = new Array; 

function book() 
{ 

var seat; 

// value in label that is changed everytime i click on a element. 
seat = document.getElementById("label").innerHTML; 

// Put it in a global array 
array.push(seat); 
window.sessionStorage.setItem("items", JSON.stringify(array)); 


booked(seat); 


} 

と負荷()関数で

function load() 
{ 
    var storedArray = JSON.parse(window.sessionStorage.getItem("items")); 


    for (var i = 0; i < storedArray.length; i++) 
    { 
    var str1 = "seat"; 
    var str2 = storedArray[i]; 


    var number = document.getElementById(str1.concat(str2)); 
    var context = number.getContext("2d"); 
    context.fillStyle = 'red'; 
    context.fillRect(0,0, seat18.width, seat18.height); 
    } 

} 

しかし、私の問題は、私はbook()関数を呼び出すたびに、配列自体をリセットし、新しい価値をプッシュするということです。 load()関数では、storedArrayは配列からの最新の値を登録するだけです。

まず、book()のすべての値をグローバル配列に格納し、すべての値をgetItemからload()に取得します。どのように私はそれを可能にすることができますか?

+0

問題を再現するjsbinを提供してください(コードスニペットはセッションストレージを編集できません)。 –

+0

@Kaddath、そうです。配列は、私の悪い、失われる必要があります。しかし、私は配列からすべての項目をsessionStorageに追加したいと思います。しかし、配列から最新のものだけを保存します。 配列が更新され、新しい値をsessionStorageに送信するたびに(同じセッションで)格納できる方法はありますか? – krm1337

+0

@Kaddath、私はjsbinとフィドルを提供しようとしましたが、うまくいきません。私はすべてのコードをコピーしましたが、問題は残っています。 – krm1337

答えて

0

sessionStorageは、現在のセッションが期限切れになるまで持続できます。代わりにlocalStorageを使用してください。

ページセッションが終了すると、sessionStorageに格納されたデータが消去されます。 ページセッションは、ブラウザが開いている間は続き、ページのリロードとリストアでは のままです。

+0

しかし、私はsessionStorageを使用する必要があります。 – krm1337

0

明確にする。だから私は私の配列(文字列に変換されます)は、私がbook()を使うたびに保存されるように、SessionStorageのSetItemに挿入します。次に、各文字列がload()のgetItemに表示されます。

関連する問題