以前、localStorageのデータを保存する方法について記事を書きましたが、localStorageが保存できるデータは一つではなく複数のデータを保存する事もできます。
で、前回はキーに対してデータを一つだけ保存したのですが、今回は複数のデータを保存する方法として複数のデータをJSONデータとして扱えば可能になります。その方法を今回は紹介してみたいと思います。
前回のlocalStorageに保存する方法などはこちら「html5のwebStorage(localStorage)でデータを保存する」を参照してください。
localStorageを使った実際のコード
下記のプログラムは分かりやすくするために省略している。
//保存する処理
savebtn.addEventListener("click", function() {
//入力されたデータを取得
var t = document.getElementById("title").value;
var n = document.getElementById("naiyou").value;
//①データをオブジェクト保存する
var datalist = {
title: t,
naiyou: n
}
//②JSONデータに変換して登録する
window.localStorage.setItem("setdata", JSON.stringify(datalist));
//データを表示
display();
}
//表示する処理
function display() {
//③JSONデータに戻してから取得する
var d = JSON.parse(window.localStorage.getItem("setdata"));
alert(d.title);
alert(d.naiyou);
};
①データをオブジェクト保存する
データをjavascriptオブジェクトで保存する。そうすると下記のようにアクセスできる
datalist.title;
datalist.naiyou;
これをそのままlocalStorageのsetItemの第2引数に渡せばいいのかと思っていたのだが、これだと表示されなくなってしまった。
調べてみると、現時点ではlocalStorageに保存できるデータは文字列だけみたい。*下記のページを参照。
「Web Storageにおける注意点」
②JSONデータに変換して登録する
そこで対策として一旦オブジェクトをJSON文字列に変換するという方法。
これは「JSON.stringify」というメソッドがあるのでそいつの引数に指定すればいい。
//JSON文字列に変換する
window.localStorage.setItem("setdata", JSON.stringify(datalist));
②JSONデータに戻してから取得する
データを取得するには、JSON.parseメソッドを使用してJSON文字列をJavaScriptオブジェクトに戻す必要がある。オブジェクトに戻した後は今まで通り「.」でアクセスできるようになる。
//JSON文字列からjavascriptオブジェクトに戻してから取得する
var d = JSON.parse(window.localStorage.getItem("setdata"));
//元に戻した後は今まで通りアクセスできる。
d.title;
d.naiyou;
下記にサンプルプログラム