HTML5 localStorage サンプル 【入門編 第4回】
localStorage サンプル

そろそろlocalStorageを使用したサンプルが多く出ていると思いきや、それほど人気がないのか、これといったサンプルに当たりません。
と思いきや、jQueryの日本語リファレンスサイトで、localStorageを使用した素敵なサイトがありました。
かなり斬新で、localStorageを使用しサクサクと動きます。
リファレンスサイトなどはこういうのを真似て欲しい反面、SEO対策としては難しいのかなと。
さて、そんなわけでlocalStorageのサンプルを作成してみました。
前回はindexedDBを使用し、簡単なTODOを作成しましたが、
同じようなものをlocalStorageで実装した場合はどうかということを検証してみました。
localStorageのサンプル
1.データ登録
/* id="set" と設定してあるボタンを押下時 */
$('#set').click(function(){
/* データはJSON形式 */
var inp = {
"date" : $('#skey').val(),
"title" : $('#title').val(),
"content" : $('#content').val(),
"postDate" : getDate()
};
/* シリアライズ化 */
var str = JSON.stringify(inp);
/* 日付をキーにして値を追加 */
localStorage.setItem($('#skey').val(), str);
});
indexedDBと比較すると transaction → objectStore の流れがなく、localStorageへ直接アクセスする為、割合簡単です。
ただ、データ型はオブジェクトがサポートされる筈なのですが、実際はサポートされていないブラウザがあり、文字列として登録する方が無難です。
2.キー指定時の検索処理
/* id="show" と設定してあるボタンを押下時 */
$('#show').click(function(){
/* id="getkey" と指定してあるテキストの値を取得 */
var sKey = $('#getkey').val();
if(sKey == ''){
/* 検索キー未指定時はアラート */
alert('検索日付を入力して下さい。');
return;
}
/* リスト部分をクリア */
$('#list').html('');
/* localStorageをループ */
$.each(localStorage, function(idx){
/* indexからキーを取得 */
var key = localStorage.key(idx);
/* キーから値(JSONへパースします)を取得 */
var out = JSON.parse(localStorage.getItem(key));
/* 画面での指定キー(日付)を比較します。 */
if(out.date.indexOf(sKey) != -1){
var cont = out.content.replace(/rn|(n|r)/g, '<br />');
var el = $('<li>').html(
'[' + out.date + '] <strong>' +
out.title + '</strong><br/>' +
cont +
'<br/>登録日(' +
out.postDate + ')'
);
/* リストに追加 */
$('#list').append(el);
}
});
});
指定キーの有無を日付の中に含まれるかで検索しています。
indexedDBと比較すると、コールバックがない分すっきりしているように思えます。
ただ、構造的な記述方法からすると、transaction → objectStore から検索キーによる検索の方がすっきりしており、検索も早そうな気がします。
