2010-06-29 20 views
63

Yani, yerelStorage'ı normal uzunluğa sahip bir nesne gibi döngüleyebileceğimi düşünüyordum. Bunu nasıl çözebilirim? Bir localStorage.length yaparsanızHTML5 ve JavaScript'te localStorage ile döngü oluşturma

localStorage.setItem(1,'Lorem'); 
localStorage.setItem(2,'Ipsum'); 
localStorage.setItem(3,'Dolor'); 

doğruysa 3 döndürür. Yani bir for...in döngüsünün çalışacağını varsayalım.

for (x in localStorage){ 
    $('body').append(localStorage[x]); 
} 

Ama boşuna:

ben gibi bir şey düşünüyordum. Herhangi bir fikir? Ben

diğer fikri for...in çalışır hangi

localStorage.setItem(1,'Lorem|Ipsum|Dolor') 
var split_list = localStorage.getItem(1).split('|'); 

gibi bir şey oldu.

cevap

106

key yöntemini kullanabilirsiniz. localStorage.key(index), index th anahtarını döndürür (sipariş, uygulama eklerken ancak anahtarları ekleyene veya kaldırıncaya kadar sabittir).

for (var i = 0; i < localStorage.length; i++){ 
    $('body').append(localStorage.getItem(localStorage.key(i))); 
} 

sipariş konularda, bir JSON tefrika dizi depolayabilir:

localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"])); 

taslak spesifikasyonu structured clone destekleyen herhangi bir nesne bir değer olabilir iddia ediyor. Ancak bu henüz desteklenmiyor gibi görünüyor.

DÜZENLEME: buna eklemek diziyi yüklemek için, sonra dükkan: Burada önceki yanıta

for(var key in localStorage) { 
    $('body').append(localStorage.getItem(key)); 
} 
+0

Çok teşekkürler! Bu sadece aradığım şey. Ben de gönderdiğiniz JSON şeylerine bakacağım. Bu mükemmel olmalı. Bir Bebek İsimleri Çevrimdışı HTML5 iOS uygulaması içindir. –

+0

Hızlı soru, bu JSON'a nasıl eklerim? Gibi, "Dolor" dan sonra "merhaba" nasıl eklerim? –

+0

@Oscar, Yukarıdaki bir örnek verdim. Temel olarak, diziyi, dizilişi, dizilişi değiştirin, ayrıştırın, ayarlayın. –

7

Bu Chrome'da benim için çalışıyor Anahtar değerlerini bilmeden, yerel depolama birimi aracılığıyla anahtar. Eğer konsol çıktısını incelerseniz

function showItemsByKey() { 
    var typeofKey = null; 
    for (var key in localStorage) { 
     typeofKey = (typeof localStorage[key]); 
     console.log(key, typeofKey); 
    } 
} 

hepiniz typeof dizesi kodunuz tarafından eklenen öğeleri göreceksiniz. Yerleşik öğeler, işlevler {[yerel kod]} veya uzunluk özelliği durumunda bir sayıdır. Sadece öğelerinizin görüntülenmesini sağlamak için yalnızca dizeleri filtrelemek için typeofKey değişkenini kullanabilirsiniz.

Not Bu, bir sayı veya boole her ikisi de dizeler olarak depolanan değer olarak depolansanız bile çalışır.

+0

Kromumda çalışmıyor. :( – TonyQ

+1

Hangi parça tam olarak? Bu kod, jQuery'yi orijinal soruya göre kullanır. Bunu, chrome js konsolunda (yerelStorage'da var) { console.log (localStorage.getItem (anahtar)); } ' – jtblin

+0

@jtblin Sadece denedim, döndü 'TypeError:' null 'yöntemini arayamıyorum', 'anahtar' null döndürdüğünü varsayalım –

1

Building yaşayacakları bir fonksiyonudur:

var words = JSON.parse(localStorage.getItem("words")); 
words.push("hello"); 
localStorage.setItem("words", JSON.stringify(words)); 
18

diğer tüm cevaplara ek olarak, $ .each işlevini kullanabilirsiniz: Sonunda

$.each(localStorage, function(key, value){ 

    // key magic 
    // value magic 

}); 

, nesneyi almak:

JSON.parse(localStorage.getItem(localStorage.key(key)));

0

Tüm cevaplar farklılıkları görmezden tarayıcılar arasında localStorage uygulamaları arasında. Bu etki alanındaki katkıda bulunanlar, yanıtlarını açıkladıkları platformlarla ağır bir şekilde nitelendirmelidir. Bir tarayıcı çapında uygulanması sadece birkaç çekirdek yöntemlerini içeren çok güçlü iken, https://developer.mozilla.org/en/docs/Web/API/Window/localStorage de belgelenmiştir ve kapanır. İçeriği dolaşmak, bireysel tarayıcılara özgü uygulamaların anlaşılmasını gerektirir.

+0

Bu cevaplardan birinin tarayıcıda nasıl çalışacağına dair bir örnek verebilir misiniz? Bu çok uzun zaman önceydi ama bu soruları yanıtlarken –

+0

ile ilgili herhangi bir sorunla karşılaştığımı hatırlamıyorum. Bu yayına değil, genel yayına eklenecek olan yorumuma niyetlendim ve biraz sert olabilirdi. Çapraz tarayıcı çözümü bulmaya çalışırken sinirlendim. (LocalStorage içinde var anahtar) için içeren (aşağıda) Steve Isenberg örnekte { typeofKey = (Typeof localStorage [anahtar]); console.log (key, typeofKey); { \t console.log (localStorage.key (i için (;; i StarTraX

+0

Bu yaptığı işlerde webkit uygulamaları çalışmıyor mu) + ":" + localStorage.getItem (localStorage.key (i))); } – StarTraX

6

basit yoludur:

Object.keys(localStorage).forEach(function(key){ 
    console.log(localStorage.getItem(key)); 
});