2011-12-01 54 views
2

我有一些股利我的網頁上的編碼爲HTML5 localStorage的鍵順序

<div id="1">Click Me to load corresponding dynamicList</div><ul class="dynamicList"></ul> 
<div id="2">Click Me to load corresponding dynamicList</div><ul class="dynamicList"></ul> 
<div id="3">Click Me to load corresponding dynamicList</div><ul class="dynamicList"></ul> 
<div id="4">Click Me to load corresponding dynamicList</div><ul class="dynamicList"></ul> 
<div id="5">Click Me to load corresponding dynamicList</div><ul class="dynamicList"></ul> 

現在對任何div的點擊的,一個AJAX調用時,其爲返回的動態列表;

<li>Some content 1</li> 
<li>Some content 2</li> 
<li>Some content 3</li> 

我想在第一次AJAX調用後在localStorage中存儲上述動態列表。所以我寫;

var key = $(selectedDiv).attr('id');  
var value = str;  //str = Returned AJAX response of li's 
localStorage.setItem(key, value); 

現在在接下來的頁面加載,我要附加的dynamicList的(用戶稍早點擊所有那些)在DOM正確的地方(所以AJAX調用沒有爲數據下一個期間的點擊)

for (i=0;i<localStorage.length;i++) 
{ 
var key = localStorage.key(i); 
    if(key != null) 
    { 
    var value = localStorage.getItem(key); 
    $("#"+i).next(".dynamicList").empty(); 
    $("#"+i).next(".dynamicList").append(value); 
    } 
} 

現在,似乎是在localStorage的數量級的一些問題,如右圖dynamicList是沒有得到在正確的地方追加。 我想有一些問題爲線

var key = localStorage.key(i); 

請讓我知道我怎麼解決這個問題。

回答

2

不要依賴localStorage鍵的順序上。您可以使用localStorage[n]遍歷localStorage上的所有可用密鑰,但是它指的是可以與localStorage[str_key]localStorage.getItem(str_key)一起使用的密鑰(字符串)。

就你而言,你已經將localStorage鍵名的索引與分配給該項目的名稱混淆了。因此,請不要使用密鑰索引,而是使用您的值鍵:

for (i=0;i<localStorage.length;i++) 
{ 
var key = localStorage.key(i); 
    if(key != null) 
    { 
    var value = localStorage.getItem(key); 
    $("#"+key).next(".dynamicList").empty(); 
    $("#"+key).next(".dynamicList").append(value); 
    } 
} 
+0

Perfetto ....這就是我正在尋找......在localStorage.key(i)和localStorage.getItem(key)之間稍微有些混淆, – testndtv

1

創建一個獨立的對象在localStorage到:存儲空間的

  • 避免污染(如果你只需填寫根節點,你就會有一個困難時期後添加額外的功能)
  • 獲取排序回:-)

localStorage.specificStorage = {}; // Maybe even []

+0

請注意,對象和數組不能存儲在localStorage中。只有字符串可以。 – Wilbert