[解決済み] キーを事前に知らなくてもlocalStorageの全アイテムを取得するには?
2023-01-30 05:48:17
質問
以前書いたキーとストレージを全て表示させたい。 私のコードは以下の通りです。関数(allStorage)を作りましたが、うまくいきません。 どうすればいいのでしょうか?
function storeUserScribble(id) {
var scribble = document.getElementById('scribble').innerHTML;
localStorage.setItem('userScribble',scribble);
}
function getUserScribble() {
if ( localStorage.getItem('userScribble')) {
var scribble = localStorage.getItem('userScribble');
}
else {
var scribble = 'You can scribble directly on this sticky... and I will also remember your message the next time you visit my blog!';
}
document.getElementById('scribble').innerHTML = scribble;
}
function clearLocal() {
localStorage.clear();
return false;
}
function allStorage() {
var archive = [];
for (var i = 0; i<localStorage.length; i++) {
archive[i] = localStorage.getItem(localStorage.key(i));
}
}
どのように解決するのですか?
このように関数を修正すると、キーに基づいたすべての項目をリストアップすることができます(項目のみをリストアップします)。
function allStorage() {
var values = [],
keys = Object.keys(localStorage),
i = keys.length;
while ( i-- ) {
values.push( localStorage.getItem(keys[i]) );
}
return values;
}
Object.keys
はJavaScript (ECMAScript 5) に新しく追加されたものです。これはオブジェクトのすべてのキーをリストアップするもので、これのオプションであるfor-inループを使うよりも高速になります。
しかし、これではキーは表示されません。そのためには、配列の代わりにオブジェクトを返す必要があります(これはむしろ無意味なIMOであり、localStorageで以前行ったのと同じように、異なるオブジェクトであなたをもたらすでしょう - しかし、例のために)。
function allStorage() {
var archive = {}, // Notice change here
keys = Object.keys(localStorage),
i = keys.length;
while ( i-- ) {
archive[ keys[i] ] = localStorage.getItem( keys[i] );
}
return archive;
}
コンパクトな形式のリストが必要な場合は、代わりにこのようにします - ここでは、配列の各項目に
key=item
で、後でペアに分割したりすることができます。
function allStorage() {
var archive = [],
keys = Object.keys(localStorage),
i = 0, key;
for (; key = keys[i]; i++) {
archive.push( key + '=' + localStorage.getItem(key));
}
return archive;
}
関連
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] Node.jsでディレクトリに存在するすべてのファイル名のリストを取得する方法は?
-
[解決済み] セレクトボックスのオプションをすべて削除してから、オプションを1つ追加して、jQueryで選択するにはどうすればよいですか?
-
[解決済み] JavaScriptオブジェクトのすべてのプロパティ値を取得する方法(キーを知らなくても)?
-
[解決済み] ブラウザウィンドウ/タブを閉じたときに、localStorageの項目を削除するには?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTML5 の localStorage キーを取得する
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] ECMAScriptとは?
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] これは純関数ですか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?